即使删除了 ~/.ssh/known_hosts,“主机密钥验证失败”

即使删除了 ~/.ssh/known_hosts,“主机密钥验证失败”

当我尝试ssh从一台装有 debian 的 Linux 计算机访问我的服务器时,我得到了

Host key verification failed.

我在网上找到的唯一帮助是删除密钥~/.ssh/known_hosts......好吧,我不仅这样做了,我还删除了整个密钥~/.ssh以确保,它也没有帮助,我仍然有Host key verification failed.错误。

答案1

好的,已回答。

当我ssh使用-v选项运行时,它向我显示了实际的错误。

这是由于错误地设置了错误的访问权限/dev/tty(无论是什么)而引起的,而 ssh 不知何故不喜欢它。sudo chmod 666 /dev/tty似乎解决了它。

答案2

那么楼主的问题已经解决了。但如果其他人通过搜索找到这个问题,并且他们的症状并非来自同一原因:

删除~/.ssh/known_hosts(或仅删除其中有问题的行)将清除缓存的主机密钥。然而,还有一个系统范围的缓存,它将存储在像/etc/ssh/ssh_known_hosts.除非特别要求,否则主机密钥不会缓存在那里。但如果您遇到主机密钥验证问题,请查看这两个文件。

答案3

也可能以各种其他方式遇到此问题,特别是在处理可能附加了多种 SSH 实现的 Windows 时。

我在 ssh 进入在 Cygwin 下运行 SSH 服务器的 Windows 10 计算机时遇到了这个问题。当您ssh从该提示符运行时,它会运行 cygwin 版本的 ssh,它使用 ~/.ssh 来存储 ssh 文件 --- 在 cygwin 下,即 /home/username。

但是,如果您git从相同的提示符运行,并且 Git 已通过 Windows 安装(在我的情况下是这样),则它使用 C:\Users\username.ssh 中的 ssh 文件。

通常,您会运行ssh hostname缓存 git 的主机密钥,但在这种情况下它不起作用,因为存在不同的known_hosts 文件。

一旦我将密钥从一个known_hosts 文件复制到另一个文件,这些git命令就可以正常工作。

相关内容