如何从已知主机列表中永久删除添加的主机?

21

目前我正在参与由我的大学托管的一个项目。我们使用Git作为版本控制工具,当我第一次连接到主机时,会显示以下消息:

"警告:将 RSA 密钥 '...' 永久添加到已知主机列表中。"

  1. 这究竟是什么意思?

  2. 完成任务后,如何从已知主机列表中移除它?如果不移除有什么问题吗?

1. 这句话的意思是,将RSA密钥添加到已知主机列表中,以便在未来连接到此主机时进行身份验证,并确保用户正在连接到正确的主机。
2. 要从已知主机列表中删除此主机,请打开终端并输入以下命令:ssh-keygen -R [hostname或IP地址]。如果不删除此主机,则可能存在安全风险,因为如果有人伪造了该主机的身份,则您的计算机可能会被攻击。
4个回答

20
如果已将某个东西添加到“已知主机列表”中,则在Windows下的git bash shell和Linux下,文件known_hosts(可以在您的主目录下的.ssh目录中找到)中将添加一个条目。
这是一个文本文件,将显示已添加的任何主机名/IP地址/密钥组合的条目。
因此,应该看到以下文件: cat ~/.ssh/known_hosts
您可能会看到类似于以下内容: removelater.com,123.456.789.10 type-of-key charactersRepresentingTheKeyForRemoveLaterHost keep.com,321.654.987.10 ssh-rsa differentSetOfCharactersRepresentingKeyForKeepHost==
以上文件有两行。
使用您喜欢的编辑器(例如vi ~/.ssh/known_hosts或notepad ~/.ssh/known_hosts),只需删除包含要删除主机的引用的完整行并保存文件即可。
尝试再次连接到现在已删除的主机将再次导致 主机'removelater.com (123.456.789.10)'的真实性无法得到证实。

15

从known_hosts文件中仅删除一个主机的最简单方法是使用:

ssh-keygen -R hostname

例子

ssh-keygen -R 192.168.1.10
ssh-keygen -R abc.lan
ssh-keygen -R domain.com

域名/IP 可能不总是在 known_hosts 中可用。在这些情况下,这种方法很有帮助。 - qwertynik

1
这意味着git已使用SSH代表您登录到远程主机,并且您之前从未连接过该服务器,因此它将服务器添加到您的已知主机列表中。如果服务器更改其身份(例如,攻击者正在拦截您的连接),则SSH将拒绝连接它。
阅读此内容:https://security.stackexchange.com/questions/20706/what-is-the-difference-between-authorized-key-and-known-host-file-for-ssh 不过,除非您很偏执并期望有人尝试窃取您的密码或工作,否则无需担心此事。

0
以下是我在Mac上用于从known_host文件中删除特定主机的快速重写:
grep -v <full.hostname> ~/.ssh/known_hosts > temp.txt
mv temp.txt ~/.ssh/known_hosts

这基本上会重写所有已知主机文件中的内容,除了包含指定主机名的行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接