SSH 免密登录
免密登录原理
即在源服务器上先生成一份公钥和一份密钥,将公钥复制到目标服务器,利用命令将公钥添加至目标服务器的授权列表(authorized_keys)。当有服务器带着公钥申请连接服务器时,目标服务器首先在authorized_keys中查找是否存在该公钥,如果存在则开始进行验证。首先生成一个随机字符串,利用对应公钥进行加密,然后返回给申请连接的服务器,申请连接服务器利用私钥进行解密,再将字符串返回给目标服务器完成验证,进行后续操作。
实际操作
具体步骤:
- 生成密钥对
- 将公钥上传至需要登录的主机的授权列表 (authorized_keys)
- 建立连接时携带公钥
需要登录的主机:例子中为 crayonsea.top
1. 客户端生成密钥对
ssh-keygen -t rsa # 加密方式 rsa
上述命令会在 ~/.ssh/ 下生成 id_rsa id_rsa.pub
2. 上传公钥到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@crayonsea.top
在目标服务器上可查看操作结果
cd ~/.ssh
vi authorized_keys
3. 测试免密登录
ssh root@crayonsea.top
不能登录的解决方法
实际操作中,可能会出现,在目标服务器的 authorized_keys
中已经写入公钥,却不能免密登录的情况。可以在两个地方尝试进行修改:(需要登录的服务器上 crayonsea.top
)
1. 修改 /etc/ssh/sshd_config
文件内容
StrictModes no
AuthorizedKeysFile .ssh/authorized_keys
删除 ~/.ssh/known_hosts
2. 修改 authorized_keys
文件权限
chmod 700 authorized_keys
1 和 2 操作完成后可以重启一下 ssh,再次尝试
service sshd restart