美文网首页程序员
ssh 原理及登录方式

ssh 原理及登录方式

作者: kimcastle | 来源:发表于2021-01-03 10:34 被阅读0次

1.  ssh 是什么?

SSH(Secure Shell)是一套协议标准。

2. ssh 是用来做什么的?

可以用来实现两台机器之间的安全登录以及安全的数据传送,其保证数据安全的原理是非对称加密

3. ssh 工作原理?

传统的对称加密使用的是一套秘钥,数据的加密以及解密用的都是这一套秘钥,可想而知所有的客户端以及服务端都需要保存这套秘钥,泄露的风险很高,而一旦秘钥便泄露便保证不了数据安全。

非对称加密解决的就是这个问题,它包含两套秘钥 - 公钥以及私钥,其中公钥用来加密,私钥用来解密,并且通过公钥计算不出私钥,因此私钥谨慎保存在服务端,而公钥可以随便传递,即使泄露也无风险。

保证SSH安全性的方法,简单来说就是客户端和服务端各自生成一套私钥和公钥,并且互相交换公钥,这样每一条发出的数据都可以用对方的公钥来加密,对方收到后再用自己的私钥来解密。

公钥交换原理过程

由上一张图可以看出来,两台机器除了各自的一套公、私钥之外,还保存了对方的公钥,因此必然存在一个交换各自公钥的步骤。实际上并不是简单的各自发送公钥,而是存在一些专门的算法。这一步在首次链接时、数据传送之前发生。

首次交换公钥过程

1.客户端发起链接请求

2.服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)

3.客户端生成密钥对

4.客户端用自己的公钥异或会话ID,计算出一个值,并用服务端的公钥加密

5.客户端发送加密后的值到服务端,服务端用私钥解密

6.服务端用解密后的值异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)

7.至此,双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

这里有一个有趣的地方,两台机器第一次使用SSH链接时,当服务端返回自己的公钥(第2步)的时候,客户端会有一条信息提示,大意是无法验证对方是否可信,并给出对方公钥的MD5编码值,问是否确定要建立链接。

这是因为SSH虽然传输过程中很安全,但是在首次建立链接时并没有办法知道发来的公钥是否真的来自自己请求的服务器,如果有人在客户端请求服务器后拦截了请求,并返回自己的公钥冒充服务器,这时候如果链接建立,那么所有的数据就都能被攻击者用自己的私钥解密了。这也就是所谓的中间人攻击

利用密码登录

利用密码登录

1.服务端收到登录请求后,首先互换公钥,详细步骤如上一节所述。

2.客户端用服务端的公钥加密账号密码并发送

3.服务端用自己的秘钥解密后得到账号密码,然后进行验证

4.服务端用客户端的公钥加密验证结果并返回

5.客户端用自己的秘钥解密后得到验证结果

利用公钥登录

利用公钥登录

有些时候并不是开发者手动去连接服务器,而是客户端的程序需要连接到服务器,这时候用密码登录就比较不方便,一是需要处理输入密码的问题,二是需要想办法安全的储存密码到程序里,这种情况下便可以利用公钥来进行无密码登录。

1.客户端用户必须手动地将自己的公钥添加到服务器一个名叫authorized_keys的文件里,顾名思义,这个文件保存了所有可以远程登录的机器的公钥。

2.客户端发起登录请求,并且发送一个自己公钥的指纹(具有唯一性,但不是公钥)

3.服务端根据指纹检测此公钥是否保存在authorized_keys中

4.若存在,服务端便生成一段随机字符串,然后利用客户端公钥加密并返回

5.客户端收到后用自己的私钥解密,再利用服务端公钥加密后发回

6.服务端收到后用自己的私钥解密,如果为同一字符串,则验证通过

利用私钥登录

1. 服务器生成一对私钥公钥对。

2. 复制私钥到客户端

3. #本地主机ssh远程服务器

ssh -v root@远程服务器IP

#注意 SSH相关的配置在/etc/ssh/sshd_config

#可以控制是否允许登录

#允许root认证登录

PermitRootLogin yes

#允许密钥认证

RSAAuthentication yes

PubkeyAuthentication yes

#默认公钥存放的位置

AuthorizedKeysFile .ssh/authorized_keys

相关文章

  • ssh 原理及登录方式

    1. ssh 是什么? SSH(Secure Shell)是一套协议标准。 2. ssh 是用来做什么的? 可以用...

  • 【转】图解SSH原理及两种登录方法

    图解SSH原理及两种登录方法详细认证流程,无ssh命令介绍

  • 个人博客搭建

    git ssh 问题 SSH原理与运用(一):远程登录

  • 了解关于SSH远程连接服务

    一、SSH 原理图 二、SSH原理描述 1、什么是SSH SSH是专门为了远程登录会话和其他网...

  • 第57期 Vue3究竟好在哪里 & 钉钉文档编辑器的前世今生 &

    【Web技术】648- 图解SSH原理及两种登录方法 SSH(Secure Shell)是一套协议标准,可以用来实...

  • ssh 免密登陆

    密码登录原理: 首先我们来看一下传统的ssh 密码登录的具体过程: 密钥登录原理: ssh 免密登陆实战 实验说明...

  • 远程

    SSH 原理与运用36 一.用密码登录 ssh user@host二.用 ssh key 登录: 1.首先你要准备...

  • SSH远程登录另一台linux

    ssh root@192.168.0.159 登录: 可以用ssh命令行方式登录。对方需要开启ssh服务 ssh ...

  • 2018-11-16

    Ubuntu ssh远程登录 一、ssh登录 首先远程连接可以通过ssh通过密钥或者账户的方式进行登录。这里并...

  • 远程登录

    远程登录另一台机器 SSH 原理与运用 用密码登录ssh user@host 密码:user(如ssh stude...

网友评论

    本文标题:ssh 原理及登录方式

    本文链接:https://www.haomeiwen.com/subject/hiruoktx.html