当我尝试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
命令就可以正常工作。