ssh是linux主机中常用的一个服务(协议),跟rsh等协议相比,它的加密通讯机制更加安全,那么两台主机之间是如何通过ssh做到安全加密通讯的呢?
1. 建立公钥和私钥
linux机器上启动SSHD服务时,该服务会主动去/etc/ssh/ssh_host*文件(公钥和私钥文件)。
如果是新装系统,不存在这些文件,SSHD服务则会主动计算公钥文件,同时也会计算出服务器自己需要的私钥文件。
2. 服务器ssh连接
服务器B想要通过ssh的方式连接服务器A,它首先要发出询问。
3. 服务器白名单和黑名单
服务器A查询自己的/etc/hosts.allow和/etc/hosts.deny文件。
如果服务器B在自己的/etc/hosts.allow里面,或者既不在etc/hosts.allow也不在/etc/hosts.deny里面,那么就允许服务器B连接。
4. 公钥传送
服务器A确定可以允许服务器B连接,于是将自己的公钥传送给服务器B。
5. 公钥对比和保存
服务器B会尝试把接收到的服务器A公钥数据保存到自己的~/.ssh/known_hosts里面,如果该公钥数据已经记录过,服务器B则会对比此次接收到的公钥跟之前保存的公钥是否一致。
6. 公钥反向传送
收到回应后,服务器B会把自己的公钥反向传输给服务器A。
7. 公私钥兼备
这样,服务器A和B就分别拥有的自己的私钥和对方的公钥,双方形成可以相互信任的机制。
8. 加密通讯
服务器A和服务器B通过ssh通讯的时候,可以采用对方的公钥加密数据,数据传送到对方后,对方可以采用自己的私钥解密。
这样数据传输过程中都是加密状态,就保证了数据传输的安全。
网友留言: