我刚刚尝试SSH服务器,我已经这样做没有问题一段时间,并收到警告,服务器的主机密钥已更改。
但它没有!
在服务器上,我检查了/etc/ssh/sshd_config引用的主机密钥,但没有更改。
在客户端,我检查了known_hosts文件,并且在那里的现有条目有正确的公钥。 我试着将known_hosts文件临时StrictHostKeyChecking , no在/etc/ssh/ssh_config中将StrictHostKeyChecking设置为no ,这样就可以自动连接,以便比较公钥。 当我这样做,并检查known_hosts的新条目,公钥部分是相同的以前!
那为什么不连接? known_hosts唯一不同的是主机名的salt和hash。 但是由于我总是通过IP和端口连接,而不使用主机名,所以这些必须是正确的。
有任何想法吗?
请注意,所有尝试连接的客户端都会收到此消息。 所以这不是客户的问题。
编辑:我应该补充说,当我连接StrictHostKeyChecking设置为no ,并创build了一个新的known_hosts文件,当我然后尝试再次使用新的known_hosts文件连接和StrictHostKeyChecking回到yes ,它没有警告连接。 换句话说,新的known_hosts文件没有警告地工作,而旧的文件没有,尽pipe里面有相同的公钥。
您不应该禁用主机密钥检查在这个testing..当错误信息popup一个冲突,它打印指纹和大卫说,告诉你哪个条目在known_hosts文件不匹配。
您可以比较指纹和主机密钥; 我不知道副手,但互联网search会告诉你。
就像ssh-keygen -l -f server-public-key.txt [linuxforms]一样。
此外,使用ssh -vv和检查/var/log/auth.log(或等效)应该告诉你更多关于这个问题