机器 A 是我的本地电脑。
机器 B 是我的远程 vps 电脑,它的 ip 是 vps_ip1。
机器C是另一台远程vps pc,它的ip是vps_ip2。
如下设置 ssh 自动登录(无密码)。
第 1 步:在机器 A 上创建身份验证 SSH-Kegen 密钥
ssh-keygen -t rsa -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #it is a comment ,input nothing just enter
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
Step2 将生成的公钥上传到机器B
scp /root/.ssh/id_rsa.pub root@vps_ip1:/root/.ssh/authorized_keys
Step3 在机器B上设置权限
ssh root@vps_ip1 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"
现在我可以使用 ssh 命令登录机器 B。
ssh root@vps_ip1
机器 C 的步骤几乎相同。
第 1 步:在机器 A 上创建身份验证 SSH-Kegen 密钥
ssh-keygen -t rsa -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):/root/.ssh/myvps
Your identification has been saved in /root/.ssh/myvps.
Your public key has been saved in /root/.ssh/myvps.pub.
Step2 将生成的公钥上传到机器C
scp /root/.ssh/myvps.pub root@vps_ip2:/root/.ssh/authorized_keys
Step3 在机器C上设置权限
ssh root@vps_ip2 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"
现在我无法使用 ssh 命令登录机器 C。
ssh root@vps_ip2
它们之间的唯一区别在于步骤1,输入要保存密钥的文件,这有关系吗?
为什么我的公钥不能保存为 /root/.ssh/myvps.pub?
在我的情况下,机器 A 必须 ssh 两个远程服务器,所以我必须将其他远程服务器分配为不同的名称。
如何解决?
您的密钥可以用您喜欢的任何名称保存。但是,
ssh
客户端只会自动搜索几个标准名称,id_rsa
,id_dsa
,id_ecdsa
, 或id_ed25519
. 如果要以任何其他名称保存它,则需要在命令行中指定文件名:或在您的
~/.ssh/config
文件中:如果要为多个远程服务器设置无密码 SSH,则无需为每个远程服务器创建不同的公钥。相反,您只需创建一次密钥对,然后将相同的公钥上传到所有远程服务器。
因此,如果您想使用无密码 SSH 连接 A->B 和 A->C,您只需在 A 上执行一次 SSH 密钥对生成。
这将为 A 创建
~/.ssh/id_rsa
(私钥)和~/.ssh/id_rsa.pub
(公钥)。公钥文件 (~/.ssh/id_rsa.pub
) 应导出/复制到 B 和 C。您可以通过 SSH 使用远程命令执行或
ssh-copy-id
将公钥复制到 B 和 C。使用远程命令执行:
使用 ssh-copy-id:
有关针对多个远程服务器的设置的更多详细信息,请参阅本文。