问题

在Linux server上执行ssh命令时,遇到下面的错误提示:
Host key verification failed

主机验证是OpenSSH的主要功能之一。该命令检查以确保你正在连接到你认为要连接的主机。当输入yes时,客户端会将服务器的公共主机密钥附加到用户的~/ .ssh / known_hosts文件中,并在必要时创建~/ .ssh目录。下次连接到远程服务器时,客户端会将此密钥与服务器提供的密钥进行比较。如果键匹配,则不会询问您是否要继续连接。

解决

我可以确认我现在连接的是受信任的机器,可以做下面的操作,来更正“主机密钥验证失败”错误:

方法1:手动删除旧秘钥

在server中,旧的秘钥存储在~/ .ssh / known_hosts文件中。客户端/源服务器中的每个用户在其主目录中都有其自己的known_hosts,只需删除目标服务器的特定用户文件中的条目即可

注意:该文件中每一行前面的信息,有可能是host名字,或者ip地址,这样就可以分辨出删除哪一行了。

方法二:使用ssh-keygen命令删除旧密钥

使用该命令的语法:

ssh-keygen -R [主机名|IP地址]

关于该命令的更多用法可以使用man命令来查看。

例子:

ssh-keygen -R 192.168.1.1
# 根据ip地址来删除指定秘钥

ssh-keygen -f "root/.ssh/known_hosts" -R 192.168.1.1
# 根据ip地址来删除指定known_hosts文件中的指定秘钥

验证

删除掉旧秘钥后,可以再次执行ssh命令,一般会提示,如果继续,会将新的秘钥添加到~/.ssh/known_host文件中。

Logo

一站式 AI 云服务平台

更多推荐