1.客户端生成秘钥
本地客户端生成秘钥:
ssh-keygen
上面这个命令会在用户目录.ssh文件夹下创建公私钥
cd ~/.ssh
ls
id_rsa (私钥)
id_rsa.pub (公钥)
2.上传公钥到服务器
这里测试用的服务器地址为:ip
用户为:root
ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip
上面这条命令是写到服务器上的ssh目录下去了
cd ~/.ssh
vim authorized_keys
可以看到客户端写入到服务器的 id_rsa.pub (公钥)内容
3.测试免密登录
客户端通过ssh连接远程服务器,就可实现免密登录
ssh root@ip
流程总结
- 客户端生成一对密钥
- 将客户端公钥发送给各个服务端(其他客户端)ssh-copy-id,注意:经过ssh-copy-id后接收公钥的服务端会把公钥追加到对应用户的$HOME/.ssh/authorized_keys文件中
- 客户端请求(带有自己的用户名和主机名)
- 服务端根据客户端的用户名和主机名查找对应的公钥,将一个随机的字符串用该公钥加密后发送给客户端
- 客户端用自己的私钥进行解密收到的字符串,并将解密后的字符串发送给服务端
- 服务端对比发送出去的和接收到的字符串是否相同,返回登录结果