我已经重新安装了我的服务器,并且收到了以下消息:
[user@hostname ~]$ ssh root@pong
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
6e:45:f9:a8:af:38:3d:a1:a5:c7:76:1d:02:f8:77:00.
Please contact your system administrator.
Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message.
Offending RSA key in /var/lib/sss/pubconf/known_hosts:4
RSA host key for pong has changed and you have requested strict checking.
Host key verification failed.
我尝试了在 Internet 上找到的各种解决方案。我的 known_hosts
文件(通常在 ~/.ssh/known_hosts
中)在 /var/lib/sss/pubconf/known_hosts
中。我试图编辑它,但它仍然处于一种状态。我已安装 ipa-client 并拥有 Fedora 19。如何解决此警告?
到目前为止,所有答案只有在您没有安装 Freeipa 的情况下才有效。
在 adrin 下面的评论中,freeipa 的正确答案是 here。
这是最简单的解决方案
ssh-keygen -R <host>
例如,
ssh-keygen -R 192.168.3.10
-R hostname 从 known_hosts 文件中删除属于 hostname 的所有键。此选项对于删除散列主机很有用(请参阅上面的 -H 选项)。
利用
ssh-keygen -R [hostname]
带有 IP 地址/主机名的示例将是:
ssh-keygen -R 168.9.9.2
这将从 known_hosts 更新您的主机的违规行为。您还可以使用 -f 标志提供 known_hosts 的路径。
$ ssh-keygen -R {server.name.com}
| $ ssh-keygen -R {ssh.server.ip.address}
| $ ssh-keygen -R server.example.com
ssh-keygen -R '[localhost]:2222'
重新创建 Digital Ocean Ubuntu 映像后,我遇到了同样的错误。我使用以下命令和我的服务器 IP 代替 [IP_ADDRESS]
ssh-keygen -R [IP_ADDRESS]
大锤是一举移除所有已知主机:
rm ~/.ssh/known_hosts
我遇到了这个问题,因为我们使用来自跳转盒的短寿命服务器的小子网,并且经常重复使用共享相同 ssh 密钥的服务器的内部 IP 地址。
known_hosts
旨在防止的确切事情)。仅当您确信其中的 所有 主机都是安全的时才执行此操作。
当您重新安装服务器时,它的身份会发生变化,您将开始收到此消息。 SSH 无法知道您是否更改了它所连接的服务器,或者是否已将中间服务器添加到您的网络以嗅探您的所有通信 - 因此它会引起您的注意。
只需删除相关条目即可从 known_hosts 中删除密钥:
sed '4d' -i /var/lib/sss/pubconf/known_hosts
4d
在 Offending RSA ...known_hosts:4
的帐户上
sed -i -e 4d /var/lib/sss/pubconf/known_hosts
identification
?
这是最简单的解决方案
使用 ssh-keygen 删除无效密钥
ssh-keygen -R "you server hostname or ip"
希望对你有帮助
my server name
是 localhost
,并且以下命令给出 Host localhost not found in /home/user/.ssh/known_hosts
,该怎么办?好的,它应该是 ssh-keygen -R [localhost]:port
问题是您之前接受了与远程计算机的 SSH 连接,并且该远程计算机的数字指纹或 SHA256 哈希密钥在您上次连接后发生了变化。因此,当您再次尝试 SSH 或使用 github 拉取代码时,同样使用 SSH,您会收到错误消息。为什么?因为您使用与以前相同的远程计算机地址,但远程计算机使用不同的指纹进行响应。因此,可能有人在欺骗您之前连接的计算机。这是一个安全问题。
如果您 100% 确定远程计算机没有受到威胁、被黑客入侵、被欺骗等,那么您需要做的就是删除远程计算机的 known_hosts 文件中的条目。这将解决问题,因为连接时不会再出现与 SHA256 指纹 ID 不匹配的问题。
在 Mac 上,这就是我所做的:
1) 找到显示为 RSA host key for servername:port has changed and you have requested strict checking.
的输出行,您将需要该日志输出中的服务器名和可能的端口。
2) 备份 SSH 已知主机文件 cp /Users/yourmacusername/.ssh/known_hosts /Users/yourmacusername/.ssh/known_hosts.bak
3)找到电脑旧指纹所在的行,删除。您可以使用步骤 #1 中的服务器名称和端口来搜索特定的违规远程计算机指纹。 nano /Users/yourmacusername/.ssh/known_hosts
4) CTRL-X 退出并选择 Y 保存更改
现在输入 ssh -p port servername
,您将收到您第一次尝试 SSH 到该计算机时所做的原始提示。然后,您可以选择将该远程计算机的更新 SHA256 指纹保存到您的 known_hosts 文件中。如果您在端口 22 上使用 SSH,则不需要 -p 参数。
您可以恢复原始 known_hosts 文件的任何问题:cp /Users/yourmacusername/.ssh/known_hosts.bak /Users/yourmacusername/.ssh/known_hosts
ssh-keygen -R [IP_ADDRESS]
对我不起作用。谢谢!
正如许多人已经说过的,使用ssh-keygen
,即
ssh-keygen -R pong
此外,您可能需要考虑暂时关闭主机密钥检查:
ssh -oStrictHostKeyChecking=no root@pong
Host ???? CheckHostIP no StrictHostKeyChecking no
(3 行,从第 2 行开始列出)
为我工作!
错误:违反 /var/lib/sss/pubconf/known_hosts:4 中的 RSA 密钥
这表明您在第 1 行有一个违规的 RSA 密钥。 4
解决方案1:
1. vi /var/lib/sss/pubconf/known_hosts 2. 删除行号:4。 3. 保存并退出,然后重试。
解决方案2:
ssh-keygen -R "你的服务器主机名或ip"
或者
解决方案3:
sed -i '4d' /root/.ssh/known_hosts
这将删除 /root/.ssh/known_hosts
的 4th
行(-i
)。
我使用了 mockinterface 的解决方案,虽然 sed -i 不太好用我通过使用 vim 手动删除该行来解决它:
sudo vim /var/lib/sss/pubconf/known_hosts
您可以使用任何其他文本编辑器,但可能需要显示您的管理权限
编辑/home/hostname /.ssh/known_hosts
,删除4行,保存。
然后再次运行 ssh root@pong
,您将看到如下消息:Are you sure you want to continue connecting (yes/no)? yes
,只需打印 yes
。
注意:如果遇到问题,请先阅读提示,它会有所帮助。
这里的其他答案很好并且有效,无论如何,我通过删除 ~/.ssh/known_hosts
解决了这个问题。这当然可以解决问题,但它可能不是最好的方法。
这是因为您的远程计算机设置已更改。为此删除您当前的密钥。
vim /root/.ssh/known_hosts
删除您正在连接的 IP 行。
在我的情况下,它发生是因为我之前与具有相同 ip(例如 192.152.51.10)的机器建立了 ssh 连接,并且系统正在考虑前一个主机的 RSA 密钥(存储在 /home/user_name/.ssh/known_hosts 中)导致在不匹配。
要解决此问题,您必须删除之前为 ip 192.152.51.10 存储的 RSA 密钥。
ssh-keygen -f "/home/user_name/.ssh/known_hosts" -R 192.152.51.10
简单的单行解决方案,在 mac 上测试:
sed '/212.156.48.110/d' ~/.ssh/known_hosts > ~/.ssh/known_hosts
从已知主机中仅删除目标 ssh 主机 IP。
其中 212.156.48.110 替换为目标主机 IP 地址。
原因:由于端口转发,另一台机器已经知道目标 IP。在连接之前删除目标 IP 将解决此问题。
更新了你的 ssh 密钥,收到上述消息是正常的。
正如消息指出的那样,只需编辑 ~/.ssh/known_hosts
并删除第 4 行
Offending RSA key in /Users/isaacalves/.ssh/known_hosts:4
或使用 ssh-keygen 删除无效密钥
ssh-keygen -R "you server hostname or ip"
使用这个命令:
truncate -s 0 /home/SYSTEM_NAME/.ssh/known_hosts
如果您尝试使用该命令连接到端口 2222 上正在运行的 docker 容器,则会收到错误消息
mian@tdowrick2~$ ssh pos@localhost -p 2222
然后要解决这个问题,在您的本地计算机上(即主机不是容器)转到 cd ~/.ssh/
并使用文本编辑器打开 known_hosts
文件。删除以 [localhost]:2222
开头的行并保存文件。现在再次尝试 ssh
mian@tdowrick2~$ ssh pos@localhost -p 2222
错误会消失,但每次容器重新启动时都必须这样做。
我使用 Windows 10 PowerShell 进行 ssh 连接。我的问题是在 Windows C:\Users\youruser.ssh 中删除文件 known_hosts ,仅此而已。
我的解决方案是:
vi ~/.ssh/known_hosts 删除包含您想要连接的 ip 的行。
这比删除所有 known_hosts
使用以下命令从 known_hosts 中删除该条目:
ssh-keygen -R *ip_address_or_hostname*
这将从 known_hosts 文件中删除有问题的 IP 或主机名并尝试再次连接。
从手册页:
-R hostname 从 known_hosts 文件中删除属于 hostname 的所有键。此选项对于删除散列主机很有用(请参阅上面的 -H 选项)。
有时候,如果出于某种原因需要重新安装服务器,通过ssh连接时我们会发现您的服务器说标识已更改。如果我们知道这不是攻击,而是我们已经恢复了系统,我们可以使用 ssh-keygen 从 known_hosts 中删除旧标识:
ssh-keygen -R <host/ip:hostname>
root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old
再次连接时,我们会要求您验证新指纹:
ssh -l user <host/ip:hostname>
The authenticity of host '<host/ip:hostname>' can't
be established.
RSA key fingerprint is 3f:3d:a0:bb:59:24:35:6d:e5:a0:1a:3f:9c:86:81:90.
Are you sure you want to continue connecting (yes/no)? yes
做就是了:
cd /home/user/.ssh/
->这里 user
将是您的用户名,例如 /home/jon/
。
然后
gedit known_hosts &
并删除其中的内容。
现在再次ssh
,它应该可以工作了。
最终解决方案!
由于存储的 ECDSA 密钥无效,因此显示。因此,我们必须使用以下命令从我们的主/控制器机器中删除 ECDSA 密钥:
ssh-keygen -R 192.168.0.132
这里 192.168.0.132 是远程系统 IP。
我遇到了这个问题,原因很简单,我ssh登录的IP地址重复,所以修改这个问题后,一切都解决了。
只有客户端问题(ip的重复密钥):
解决变体:
清除一个 ip(默认端口 22):
ssh-keygen -f -R 7.7.7.7
对于一个 ip(非默认端口):
ssh-keygen -f -R 7.7.7.7:333
快速清除所有ip:
cd ~; rm .ssh/known_hosts
7.7.7.7 - ssh 你的服务器 ip 连接
333 - 非标准端口
我在我的机器上遇到了同样的错误,我清除了 known_hosts
文件,之后它就可以正常工作了。
known_hosts
文件问题时,您不想删除您的 authorized_keys
只需清除 /home/{username}/.ssh/known_hosts 中存在的 known_hosts
vi /home/{username}/.ssh/known_hosts
删除已知主机中的每一行并退出,然后您将能够登录。
或者
运行这个命令
ssh-keygen -R "hostname/ip_address"
解决方案:
1- 从“$HOME/.ssh/known_hosts”中删除指向无法连接的主机的行。
2- 执行这个命令: ssh-keygen -R "IP_ADDRESSorHOSTNAME" (用你的目标 ip 或目标主机名替换 "IP_ADDRESSorHOSTNAME")
3-重试ssh连接(如果失败请检查.ssh目录的权限,它必须是700)
我在 UBUNTU (linux) 上的解决方案:
1.您必须从“/home/YOUR_USERNAME/.ssh/known_hosts”中的“known_hosts”文件中删除内容
2.生成一个新的ssh密钥,如“ssh-keygen -t rsa -C”your.email@example.com“-b 4096”
3.将新的 ssh 密钥复制粘贴到您的 git 存储库(在我的情况下为 gitlab)SSH 密钥中。
这个对我有用 !
ssh-keygen -R [127.0.0.1]:3022
之类的语法删除。只需检查您的 .ssh/known_hosts 文件中明确说明的内容。<host>
应与错误消息中的确切值一起使用,用单引号括起来以进行 shell 转义。例如:... host key for [example.com]:3422 has changed ...
变为ssh-keygen -R '[example.com]:3422'