【已解决】本地与云服务器 ssh 免密登陆(详细分析,共四种情况)


ssh 免密登陆原理

主要原理依据

  • 在 A 上生成公钥私钥;

  • 将公钥拷贝给 Server B,要重命名成 authorized_keys(从英文名理解其含义);

  • Server A 向 Server B 发送一个连接请求;

  • Server B 得到 Server A 的信息后,在 authorized_key 中查找,如果有相应的用户名和 IP,则随机生成一个字符串,并用 Server A 的公钥加密,发送给 Server A;

  • Server A 得到 Server B 发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给 Server B。Server B 进行和生成的对比,如果一致,则允许免密登录。

实现:A 机器远程连接 B 机器,实现免密登陆。
本地主机 A:1.1.1.1
远程主机 B:2.2.2.2


实现步骤

1. A 机器获取公钥(从本地 root 免密登陆远端 root 为例)

输入 ssh-keygen 生成密钥

进入 /root/.ssh 目录下可查看秘钥对

authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥

id_rsa:生成的私钥文件
id_rsa.pub:生成的公钥文件 // 需要用的公钥文件

如果希望 ssh 公钥生效需满足至少下面两个条件:

.ssh 目录的权限必须是 700
.ssh/authorized_keys 文件权限必须是 600

2. A 公钥写入 B 机器的 authorized_keys 文件

将本地 id_rsa.pub 文件的内容拷贝至远程服务器的 /root/.ssh/authorized_keys 文件中。若要登陆到远端普通用户,见步骤 3。

3. 登陆到普通用户与登陆到 root 免密区别

登陆到普通用户,远端普通用户家目录自建 ~/.ssh/authorized_keys,把 A 机器的公钥写入 authorized_keys 文件,其他操作一致。


小结

以上操作为本地 root 登陆到远端 root/普通用户的免密操作,如需要从本地普通用户登陆到远端,只需要切换当前用户为 /home 下的用户,重复上述操作即可 。



版权声明:本文为idiot5lie原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。