将 ssh 密钥从一台服务器复制到另一台服务器

Sou*_*Pal 16 ssh

我有一个服务器(假设它的 ip 是 abcd),它允许用户通过 ssh 登录。现在我想更改物理机,保持 ip 不变。这样新机器仍然可以被这样的用户访问

$ssh abcd

问题是,每当一个用户尝试登录时,她都会收到以下 ssh-key mismatch 错误。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@
@警告:远程主机标识已更改!@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@
有人可能正在做一些令人讨厌的事情!
现在有人可能正在窃听你(中间人攻击)!
也有可能 RSA 主机密钥刚刚被更改。
远程主机发送的 RSA 密钥的指纹是
02:dc:c6:18:1b:34:b7:1d:fa:90:ab:e1:95:48:69:84。
请联系您的系统管理员。
在 /home/user/.ssh/known_hosts 中添加正确的主机密钥以消除此消息。
/home/user/.ssh/known_hosts 中的违规密钥:37
校友的 RSA 主机密钥已更改,您已要求进行严格检查。
主机密钥验证失败。

我知道用户可以从文件 ~/.ssh/known_hosts 中删除第 37 行,下次她会得到是/否提示。我想要的是用户应该不知道整个机器更换的事情,而只是提示输入密码。

怎么做?

hea*_*vyd 18

正如Ethabell 所提到的,您可以将当前主机密钥复制到新服务器。

你可以通过打开你的sshd_config文件来找到你的主机密钥(在我的 Ubuntu 12.04 盒子上/etc/ssh/sshd_config)。在配置文件中查找HostKey条目。这些条目将告诉您主机密钥文件所在的位置。您应该能够将这些文件复制到新服务器并更新新服务器sshd_config以指向复制的密钥(或者只是覆盖新服务器上已经存在的文件)。

另外,请注意sshd_config手册页中的这一部分,特别是有关权限的部分:

指定包含 SSH 使用的私有主机密钥的文件。默认/etc/ssh/ssh_host_key用于协议版本 1、和 /etc/ssh/ssh_host_dsa_key/etc/ssh/ssh_host_ecdsa_key以及/etc/ssh/ssh_host_rsa_key协议版本 2。请注意,如果文件是组/世界可访问的,sshd(8) 将拒绝使用该文件。可以有多个主机密钥文件。“rsa1”密钥用于版本 1,“dsa”、“ecdsa”或“rsa”用于 SSH 协议的版本 2。