SSH公钥与私钥原理
一、SSH概述
SSH是一款常用的远程登录工具,有两种登录方式,一种是输入密码的方式登录,另一种是采用公钥的方式登录。


二、密码登录原理
登录过程
(1)远程主机收到用户的登录请求,把自己的公钥发给用户

(2)用户用将公钥将远程主机的登录密码进行加密,并发送给远程主机

(3)远程主机用私钥对用户发过来的密码进行解密,解密出来的密码如果正确在允许远程登录。

2.什么是公钥
首次登录是会有一下提示:
[root@compute01 ~]# ssh 192.168.0.10
The authenticity of host '192.168.0.10 (192.168.0.10)' can't be established.
ECDSA key fingerprint is SHA256:hiNCg0JXmqfxqU2ePhpldLnA6hnkxlrsMCdAnb9q3PU.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.10' (ECDSA) to the list of known hosts.
这段话的意思是,无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?
公钥是采用ECDSA、RSA等算法的出来的一串数值。
二、免密登录原理
登录过程
(1)通过ssh-keygen命令生成密钥对,id_rsa为密钥,id_ras.pub为公钥

(2)将公钥发送给远程主机,存在远程主机/root/.ssh/authorized_keys 文件中

(3)远程主机收到公钥后,会生成一个随机数R,并将这个随机数用收到的公钥加密,并将加密后的随机数(注意这里不用户密码)发送用户。

(3)用户解密出随机数并用MD5算法将个随机数和本次会话密钥(session kye)生成一个摘要Digest1,并发送给远程主机,远程主机也会将随机数和本次会话密钥生成一个摘要Digest2

(4)远程主机对比Digest1与Digest2,如果相同则完成远程登录