Loading

SSH 免密登录

免密登录原理

img

​ 即在源服务器上先生成一份公钥和一份密钥,将公钥复制到目标服务器,利用命令将公钥添加至目标服务器的授权列表(authorized_keys)。当有服务器带着公钥申请连接服务器时,目标服务器首先在authorized_keys中查找是否存在该公钥,如果存在则开始进行验证。首先生成一个随机字符串,利用对应公钥进行加密,然后返回给申请连接的服务器,申请连接服务器利用私钥进行解密,再将字符串返回给目标服务器完成验证,进行后续操作。

实际操作

具体步骤:

  1. 生成密钥对
  2. 将公钥上传至需要登录的主机的授权列表 (authorized_keys)
  3. 建立连接时携带公钥

需要登录的主机:例子中为 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

参考

posted @ 2020-04-15 17:56  CrayonSea  阅读(955)  评论(0编辑  收藏  举报