您的位置:首页 > 运维架构

Open SSH原理

2015-07-12 23:20 288 查看
OpenSSH(免费的 SSH 的实现)类似于
telnet
rsh
ssh
客户程序也可以用于登录到远程机器。所要求的只是该远程机器正在运行
sshd
,即
ssh
服务器进程。但是,与
telnet
不同的是,
ssh
协议非常安全。加密数据流,确保数据流的完整性,甚至安全可靠的进行认证它都使用了专门的算法。

SSH原理



1、服务器建立公钥
每一次启动sshd服务时,该服务会主动去找/etc/ssh/ssh_host* 的文件。系统刚刚安装完成时,由于没有这些公钥,sshd会主动去计算出这些需要的公钥,同时也会计算出服务器自己需要的私钥

[root@rhce7 ~]# cd /etc/ssh
[root@rhce7 ssh]# ls -l
total 268
-rw-------. 1 root root     242153 Mar 20  2014 moduli
-rw-r--r--. 1 root root       2123 Mar 20  2014 ssh_config
-rw-------. 1 root root       4442 Mar 20  2014 sshd_config
-rw-r-----. 1 root ssh_keys    227 Jun 28 05:37 ssh_host_ecdsa_key
-rw-r--r--. 1 root root        162 Jun 28 05:37 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys   1675 Jun 28 05:37 ssh_host_rsa_key
-rw-r--r--. 1 root root        382 Jun 28 05:37 ssh_host_rsa_key.pub


2、客户端主动联机请求
若客户端想要联机到ssh服务器,则需要使用适当的客户端程序来联机,比如ssh, putty等客户端程序连接

3、服务器传送公钥给客户端
接收到客户端的要求后,服务器便将第一个步骤取得的公钥传送给客户端使用(此时应是明码传送,反正公钥本来就是给大家使用的)

4、客户端记录并比对服务器的公钥数据及随机计算自己的公私钥
若客户端第一次连接到此服务器,则会将服务器的公钥记录到客户端的用户家目录内的 ~/.ssh/known_hosts。
若是已经记录过该服务器的公钥,则客户端会去比对此次接收到的与之前的记录是否有差异。若接受此公钥,则开始计算客户端自己的公私钥

5、回传客户端的公钥到服务器端
用户将自己的公钥传送给服务器,此时:
服务器:具有服务器的私钥与客户端的公钥
客户端:具有服务器的公钥以及客户端自己的私钥

6、开始双向加解密
(1)服务器到客户端:服务器传送数据时,拿用户的公钥加密后送出。客户端接收后,用自己的私钥解密
(2)客户端到服务器:客户端传送数据时,拿服务器的公钥加密后送出。服务器接收后,用服务器的私钥解密,这样就能保证通信安全

参考:
http://www.open-open.com/lib/view/open1422417444048.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: