SSH连接问题“主机密钥validation失败…”错误

我可以通过SSH连接到局域网中的另一台Ubuntu机器。 在那两台PC上我安装了openssh-server,但是从另一台Ubuntu计算机上我无法通过SSH连接到我的PC,我收到了这个错误:

主机密钥validation失败…

“主机密钥validation失败”表示远程主机的主机密钥已更改。

SSH将远程主机的主机密钥存储在~/.ssh/known_hosts 。 您可以手动编辑该文本文件并删除旧密钥(您可以在错误消息中看到行号),或使用

 ssh-keygen -R hostname 

(我从答案中了解到是否可以从SSH的known_hosts文件中删除特定的主机密钥? )。

如果您在缺少对prompt-to-add-hostkey的交互式访问的某些远程/脚本编写情况下运行,请按以下方式解决此问题:

 $ ssh -o StrictHostKeyChecking=no user@something.example.com uptime 

警告:永久性地将“something.example.com,10.11.12.13”(RSA)添加到已知主机列表中。

有时也会出现在串行控制台上工作的情况,然后在详细模式下检查上面的命令-v会显示/dev/tty不存在,而它确实存在。

 ssh -v user@hostname 

在上面的例子中,只需删除/dev/tty并在/dev/tty创建/dev/ttyS0的符号链接。

 rm /dev/tty ln -s /dev/ttyS0 /dev/tty 

作为替代方案,将id_rsa.pub添加到远程位置,因此不会提示密码,您将获得登录访问权限。

在我的情况下,这是由udev问题引起的 – 没有/dev/tty设备节点。 我的解决方案只是:

 sudo mknod -m 666 /dev/tty c 5 0 

在终端上:

 ssh -o StrictHostKeyChecking=No -i YourPublicKey.pem user@example.com uptime 

将出现以下消息或类似消息:

 Warning: Permanently added 'example.com, XX.XXX.XXX.XX' (ECDSA) to the list of known hosts. 00:47:37 up 3 min, 0 users, load average: 0.00, 0.00, 0.00 

然后,正常连接到您的EC2:

 ssh -i YourPublickey.pem user@example.com 

好吧,这只是因为第二个ubuntu需要通过密钥连接而不是密码。

我建议你在你的电脑上使用sudo dpkg-reconfigure openssh-server ,然后它应该正常工作。 它将重置openssh的配置,并应返回默认密码身份validation。

第二种可能性是,你的PC中已有一个关键用于你的其他ubuntu,并且它已经改变,因此不再被识别。 在这种情况下,您必须编辑文件.ssh/authorized_keys以删除标识您的ubuntu的有问题的行。

这是一个老线程,我刚刚回答了这个问题,我将添加我所做的解决这个问题。

 ssh-keygen -f "/home/USER/.ssh/known_hosts" -R HOSTNAME 

我只是看了它向我扔的错误消息,它说要运行该命令以便从主机列表中删除它。 之后我做了以下事情:

 ssh-copy-id HOSTNAME 

我跟着那里的提示,直到我能够进入服务器。

这意味着您的远程主机密钥已更改(可能是主机密码更改),

您的终端建议以root用户身份执行此命令

 $ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231 

您必须从PC /服务器上的主机列表中删除该主机名。 复制建议的命令并以root用户身份执行。

 $ sudo su // Login as a root user $ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231 // Terminal suggested command execute here Host [www.website.net]:4231 found: line 16 type ECDSA /root/.ssh/known_hosts updated. Original contents retained as /root/.ssh/known_hosts.old $ exit // Exist from root user $ sudo ssh root@www.website.net -p 4231 // Try again 

希望这有效。

您应该以这种方式更改密钥:从您给定的错误中找到更改的主机密钥,例如:/Users/user-name/.ssh/known_hosts:5中的ECDSA密钥已更改,表示第5个密钥已更改,因此请执行以下操作:

 sed -i '5d' ~/.ssh/known_hosts 

注意:您必须是root用户或拥有sudo权限。

你必须通过在目标上运行它来将目标主机的rsa密钥放入源主机/home/user/.ssh/known_hosts

 ssh-keyscan -t rsa @targethost 

pico ~/.ssh/known_hosts并删除所有行,重新连接后,您将获得一个新密钥。

我的解决方案来自这篇博客文章: SSH Secure Shell Client的算法协商失败

您需要按如下方式修改文件:

 sudo nano /etc/ssh/sshd_config 

然后添加以下内容:

 # Ciphers Ciphers aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,arcfour KexAlgorithms diffie-hellman-group1-sha1 

基本上你尝试了不同的解决方案,直到你找到一个可以解决你的问题。 如果上述解决方案不起作用,请尝试这个。 如果这个不起作用,请尝试其他人。

只需在〜/ .ssh / config中禁用严格的主机密钥检查:

 Host * StrictHostKeyChecking no