最简单的解决办法是:
rm -f .ssh/known_hosts
``` ```
ssh-keygen -R "hostname"
ssh会重新创建文件,但是你失去了对其他主机的密钥检查!
或者,你可以使用:
&001
或者,ssh的 “man-in-the-middle "消息应该会显示已知的_hosts文件中的哪一行有违规的指纹。编辑文件,跳转到那一行并删除它。
sed -i '6d' ~/.ssh/known_hosts
将修改文件 ~/.ssh/known_hosts:6 ,删除第6行。
有一个ssh-keygen开关(-R
)。
man ssh-keygen
读作:
-R
hostname从
hostname
文件中删除所有属于known_hosts
的密钥。这个选项对删除散列主机很有用(参见上面的-H
选项)。
警告会告诉你已知的主机文件中的具体行数。
这里有一个例子:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA host key for foo-bar.net has changed,
and the key for the corresponding IP address 127.0.0.1
is unchanged. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
Offending key for IP in /home/user/.ssh/known_hosts:6
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
看到/home/user/.ssh/known_hosts:6
部分了吗?它指定了文件和行号。
你需要运行下面的命令来解决这个问题。打开终端,键入以下命令:
ssh-keygen -R server-name
ssh-keygen -R server.ip.addre.ss
ssh-keygen -R 202.54.1.5
ssh-keygen -R server1.example.com
``` 后面的值替换掉即可
你也可以使用UserKnownHostsFile和StrictHostKeyChecking标志来指示ssh不检查已知的hosts文件。
例如:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com
为了方便使用,你可以别名为:
alias boldssh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
现在你可以在确定你信任服务器的证书时,直接用粗体字来表示ssh。
所有的答案都很好,但是对于真正的SSH pro来说,我们缺少的是如何删除带有端口号的ssh签名的信息,
–简单的ssh主机签名删除命令:
–复杂的ssh密钥删除,比如你在非标准端口222上连接ssh:
,会得到警告,要删除这个,需要用方括号冒号的端口号:
ssh-keygen -R [example.com]:222
希望对非标准配置的用户有帮助。
你也可以用rmknownhost 111(111是要删除的行):
#! /usr/bin/env ruby
line = ARGV[0] || raise("gimme line to remove")
hosts = File.expand_path("~/.ssh/known_hosts")
content = File.readlines(hosts)
removed = content.delete_at line.to_i - 1
puts "Removed:\n#{removed}"
File.open(hosts, 'w'){|f| f.write content * ""}
保存为rmknownhost
,在你的PATH
中的文件夹中保存为&007。
它是一个文本文件。你可以很容易地用vi(m)编辑,只需删除相关行(dd),然后保存文件(wq)即可。但如果有专门的命令删除主机,这可能是最安全的方法。