如何pipe理我的.ssh / known_hosts文件

我运行一个Ubuntu桌面,在VirtualBox中有一堆虚拟服务器来testing东西,等等。在过去,我也连接到其他types的远程VPS Linux机器。 目前我的.ssh/known_hosts文件中有很多键,其中大部分都没有被使用。

我想清理我的.ssh/known_hosts文件,但我怎么知道哪个键属于哪个主机? 也就是说,我怎么知道我可以安全地移除哪些键以及哪些键我应该离开?

要知道known_hosts中已知主机名的哪个条目,请执行以下操作:

  # ssh-keygen -H -F <hostname or IP address> 

要从known_hosts中删除单个条目,请执行以下操作:

  # ssh-keygen -R <hostname or IP address> 

如果你有一个你所有主机的列表,你可以做类似的事情

 ssh-keyscan -t rsa,dsa -f list_of_hosts > ~/.ssh/known_hosts 

这将覆盖您的.ssh / known_hosts文件与基于扫描主机的新生成的文件。

并且做其他的事情。 HashKnownHosts比这里的帮助更麻烦。

有困难…

Ubuntu默认哈希hostnames known_hosts文件(这不是默认的openssh行为),使读者很难知道你访问的是哪个系统。

如果你真的想清理文件,最简单的select可能只是删除它,并检查你知道的服务器的密钥,因为他们出现,但我真的只留下known_hosts。

您可以通过注释/ etc / ssh / ssh_config中的选项来阻止新主机条目被哈希

 #HashKnownHosts yes