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

How to remove permanently added host from list of known hosts?

目前我正在从事一个由我的大学主持的项目。我们使用 git 作为版本控制工具,当我第一次连接到主机时,它显示以下消息: "Warning: Permanently added '...' (RSA) to the list of known hosts."

  1. 这到底是什么意思?

  2. 作业完成后,如何将其从已知主机列表中删除?不做有什么问题吗?

这意味着 git 已经使用 SSH 为您登录到远程主机,而您之前从未连接到该服务器,因此它将服务器添加到您的已知主机列表中。如果服务器更改其身份(例如,您的连接被攻击者拦截),则 SSH 将拒绝连接到它。

读这个:https://security.stackexchange.com/questions/20706/what-is-the-difference-between-authorized-key-and-known-host-file-for-ssh

尽管如此,您无需担心这一点,除非您多疑并期待有人试图窃取您的密码或您的工作。

如果某些内容已添加到 'list of known hosts',则在 git bash shell Windows 和 linux 下,一个条目将被添加到文件 known_hosts 中,该文件可以在主目录下的 .ssh 目录中找到。

这是一个文本文件,将显示已添加的任何 hostname/ip address/key 组合的条目。

所以 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_hostsnotepad ~/.ssh/known_hosts),只需删除引用您要删除的主机的完整行并保存文件。

尝试再次连接到您现在已删除的主机将再次导致

无法确定主机 'removelater.com (123.456.789.10)' 的真实性。

以下是我在 Mac 上用于从 known_host 文件中删除特定主机的快速重写:

grep -v <full.hostname> ~/.ssh/known_hosts > temp.txt
mv temp.txt ~/.ssh/known_hosts

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

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

ssh-keygen -R hostname

例子

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