第一次ssh到远程主机时远程主机会发送它的公钥到客户端主机,客户机确认连续连接后会把远程主机的公钥保存到.ssh/known_hosts文件,下次再连接此远程主机时会去.ssh/known_hosts查看,如果是已经保存的公钥证明是信赖主机,即不会告警并直接提示输入用户名密码登录。
二、密码登录流程
远程主机收到客户端要求后会把自己的公钥发送给客户端,客户端通过公钥加密之后将密码发送给远程主机,远程主机用密钥解密,密码如果精确则登录成功。
三、公钥登录(免密登录)流程
公钥登录事理便是客户端将自己的公钥存储到远程主机的.ssh/authorized_keys中,客户端发起登录时,远程主机会发送一段随机字符串给客户端,客户端用自己的私钥加密后重新发回远程主机,远程主机用存储的客户端公钥解密之后比拟之前发送给客户真个字符串,相同的话即认为客户机认证,不在须要输入密码直接登录系统。
四、公钥登录配置
1、远程主机ssh配置
vi /etc/ssh/sshd_config
RSAAuthentication yes #启用RSA认证
PubkeyAuthentication yes #启用公钥认证
AuthorizedKeysFile .ssh/authorized_keys #公钥认证文件
2、在客户端天生公私钥文件
ssh-keygen -t rsa
一起回车之后在$HOME/.ssh/下就可以看到两个文件
-rw-------. 1 root root 1675 Oct 25 12:04 id_rsa #私钥
-rw-r--r--. 1 root root 391 Oct 25 12:04 id_rsa.pub #公钥
3、将客户端公钥追加到远程主机 .ssh/authorized_keys中
cat .ssh/id_rsa.pub | ssh root@xxx.xxx.xxx.xx 'cat >> .ssh/authorized_keys'
.ssh目录的权限必须是700
.ssh/authorized_keys文件权限必须是600
如果配置完成还是无法免密登录,检讨权限,属组是否精确,被坑了几次了,牢记~