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


12

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

$ ssh abcd

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

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@
@警告:远程主机标识已更改!@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@
有人在做某些事,这很有可能!
可能有人正在偷听您(中间​​人攻击)!
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行,并且下次她会收到是/否提示。我想要的是用户应该不知道整个机器更换的事情,而只是提示输入密码。

怎么做?


3
您是否知道这会ssh破坏唯一的针对中间攻击的保护措施,并且可能导致您将密码直接发送给攻击者而不是预期的计算机?除非您知道自己不受主动攻击的事实(例如,您与目标计算机位于同一安全的内部网络上),否则这将破坏ssh的安全模型。
David Schwartz 2013年

是。两台机器都在同一内部网络中。甚至用户都在同一个内部网络中。在这种情况下,我有什么选择?
Souvik Pal

这还不够。它们必须位于同一安全的内部网络中。也就是说,他们必须绝对100%信任没有设备连接到不是100%安全的内部网络,并且他们必须100%信任可以控制这些设备或可以将设备连接到该网络的所有人。换句话说,在几乎任何现实情况下,这都是一个坏主意。
David Schwartz 2013年

2
这是完全合理的事情。我正在将ssh服务器密钥复制到HA的另一台服务器上,以便在我登录时遇到这些错误。此外,我还会收到有关故障转移的电子邮件。
马特·H

3
我同意马特的观点。如果您同时控制两台计算机,并因此控制着密钥的所有者,那么将主机密钥从一台计算机移至您控制范围内的另一台计算机并不是中等风险或高风险的人。如果连接的用户信任您的主机密钥,则没关系。
罗斯

Answers:


14

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。


1

如果您拥有原始主机密钥,则可以还原它,这将停止错误。

或者,您可以在sshd配置文件中关闭StrictHostKeyChecking。

...但是,这样做是一个可怕的想法。 如果有一种方法可以ssh-keygen -R server.example.com在客户端计算机上运行,那将是最好的方法-因为关闭主机密钥检查就像说:“嘿,攻击我。” 当事情发生变化时,我会变得晦涩难懂,但是安全性应该比模糊变化更重要。


您能否详细说明如何在较新的计算机上还原主机密钥?
Souvik Pal

1

你可以这样尝试

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"' 

请注意,如果文件夹.ssh尚不存在,则上述命令将失败。此外,在创建文件以设置最小可能的权限时(最好仅对所有者进行读写)可能会更好。这是更高级的命令:

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'

有关此问题的更多信息,您必须访问以下网站:SSH主机密钥更改错误

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.