xpt Asked: 2019-07-01 15:29:28 +0800 CST2019-07-01 15:29:28 +0800 CST 2019-07-01 15:29:28 +0800 CST 修复“远程主机标识已更改!” 在服务器端 772 请注意,问题是修复“REMOTE HOST IDENTIFICATION HAS CHANGED!” 服务器端的问题。 我知道其中的含义而且我确切地知道我在做什么—— 我正在重新安装/升级我的服务器,并希望这个过程尽可能顺利。 在重新安装/升级期间,我可能需要多次来回启动到旧版本或新版本。 因此,我需要尽可能消除来自客户端的警告。否则,我需要~/known_hosts不必要地来回翻转我的文件。 那么如何将我的新服务器的指纹/ECDSA 密钥设置为和以前一样呢? ssh upgrade 1 个回答 Voted Best Answer Gordon Davisson 2019-07-01T16:13:14+08:002019-07-01T16:13:14+08:00 更新:稍微考虑一下后,我想我会改变我的建议,只复制关键文件和引用它们的配置条目。密钥文件都在 /etc/ssh/ 中,并且每个文件都有一个相应的带有扩展名ssh_host_<keytype>_key的公钥文件。.pub下面是一个使用 dsa、ecdsa、ed25519 和 rsa 密钥的示例: $ cd /etc/ssh $ ls -l ssh_host_*key* -rw------- 1 root root 668 Apr 8 03:43 ssh_host_dsa_key -rw-r--r-- 1 root root 606 Apr 8 03:43 ssh_host_dsa_key.pub -rw------- 1 root root 227 Apr 8 03:43 ssh_host_ecdsa_key -rw-r--r-- 1 root root 178 Apr 8 03:43 ssh_host_ecdsa_key.pub -rw------- 1 root root 411 Apr 8 03:43 ssh_host_ed25519_key -rw-r--r-- 1 root root 98 Apr 8 03:43 ssh_host_ed25519_key.pub -rw------- 1 root root 1679 Apr 8 03:43 ssh_host_rsa_key -rw-r--r-- 1 root root 398 Apr 8 03:43 ssh_host_rsa_key.pub HostKey并且/etc/ssh/sshd_config 中可能有条目告诉 sshd 使用它们。在我的例子中,文件只是默认文件,所以相关行被注释掉了: $ grep HostKey /etc/ssh/sshd_config #HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key #HostKey /etc/ssh/ssh_host_ecdsa_key #HostKey /etc/ssh/ssh_host_ed25519_key 您应该能够从原始服务器克隆密钥文件(确保匹配旧权限),如果有未注释的HostKey条目,您也应该将它们添加到新的配置sshd_config文件中。如果那里有任何其他非默认设置,您也需要复制它们。 我最初建议只将整个/etc/ssh/目录从旧服务器克隆到新服务器。这样做的好处是它会自动复制您所做的任何其他设置更改。缺点(也是我决定不推荐它的原因)是旧配置可能不包括为提高安全性所做的更改。 例如,您的旧配置可能没有包含自定义 Diffie-Hellman 模数的 /etc/ssh/moduli 文件,而新操作系统版本可能不会自动生成一个。这将是一个问题,因为默认模数不是很安全,而且由于每个人过去都使用相同的模数,因此对它的攻击就是对每个人的攻击。有关更多信息,请参见此处和此处。 如果您的“旧”服务器配置不太古老,它应该已经有一个自定义模数文件,但这只是一个例子;可能还有其他应该更新的东西,所以使用几乎是新的配置可能更好。顺便说一句,使用不同的模数不会导致“ID CHANGED”类型错误,因此如果该文件存在于旧服务器中,则无需复制它。
更新:稍微考虑一下后,我想我会改变我的建议,只复制关键文件和引用它们的配置条目。密钥文件都在 /etc/ssh/ 中,并且每个文件都有一个相应的带有扩展名
ssh_host_<keytype>_key
的公钥文件。.pub
下面是一个使用 dsa、ecdsa、ed25519 和 rsa 密钥的示例:HostKey
并且/etc/ssh/sshd_config 中可能有条目告诉 sshd 使用它们。在我的例子中,文件只是默认文件,所以相关行被注释掉了:您应该能够从原始服务器克隆密钥文件(确保匹配旧权限),如果有未注释的
HostKey
条目,您也应该将它们添加到新的配置sshd_config
文件中。如果那里有任何其他非默认设置,您也需要复制它们。我最初建议只将整个
/etc/ssh/
目录从旧服务器克隆到新服务器。这样做的好处是它会自动复制您所做的任何其他设置更改。缺点(也是我决定不推荐它的原因)是旧配置可能不包括为提高安全性所做的更改。例如,您的旧配置可能没有包含自定义 Diffie-Hellman 模数的 /etc/ssh/moduli 文件,而新操作系统版本可能不会自动生成一个。这将是一个问题,因为默认模数不是很安全,而且由于每个人过去都使用相同的模数,因此对它的攻击就是对每个人的攻击。有关更多信息,请参见此处和此处。
如果您的“旧”服务器配置不太古老,它应该已经有一个自定义模数文件,但这只是一个例子;可能还有其他应该更新的东西,所以使用几乎是新的配置可能更好。顺便说一句,使用不同的模数不会导致“ID CHANGED”类型错误,因此如果该文件存在于旧服务器中,则无需复制它。