为什么 ssh-keygen -f "~/.ssh/known_hosts" -R "主机名或 ip" 不起作用?

为什么 ssh-keygen -f "~/.ssh/known_hosts" -R "主机名或 ip" 不起作用?

当我键入此命令时,会出现以下消息:

line 1 invalid key: -----BEGIN ...
~/.ssh/known_hosts is not a valid known hosts file.
Not replacing existing known_hosts file because of errors

答案1

以下行表明您的known_hosts 文件中有些内容不是已知主机:

line 1 invalid key: -----BEGIN

这使得看起来有一个 SSH 密钥被意外写入 ~/.ssh/known_hosts 而不是 ~/.ssh/id_rsa

在编辑器中打开它。已知主机条目如下所示:

192.168.1.1 ssh-rsa RzF4THZKZjc4S1VDRkdIVFZGYkg2dHJoWllDZkx4cmJib0RhY1F3SzczQWc3R2JHcFlpUjdvVE9Ia014RDlqMWOR2FseXdqVmlOeHJXcnZ4NUhVcGRhYzJ0R1VPaVRNNWlPbHZReFdEZ2dEd3RiR2g1cHZ1SFVwb1Y1WUx2VzFDVEJLcE4wOWJNdmluRTFMU2hlR1lU

SSH 密钥如下所示:

-----BEGIN RSA PRIVATE KEY-----
VXhTNTdlUExWVHdjVEJnSE1xZmlHak5uRGw5dVVyWEhMOHEzd2ZvVHFKWG02ZHc4cnJZY2J0UUdE
R1VhQnJHUDl5NGpVTXJRRnIzZ1BFVzdYM2hMd0k0cHpXclRuRzB1anEzdGlPTW9RSjBUZWJaNEFy
OG1xb3d6WDlwWDNQV21ZYTdKZmduODYyc0NQaDlXQ2ZkZllyVzE4eEdjaDRHNmRobWFKWnpsN2RU
...
...
cUNDaDljQjZsSHBjaEM1T0liTE4xcUswMmV3eUJ0VXVxNW9NcURBMGJzRGdUdlo5cmdBS1RrdG5O
WFhoQzZ3cXo5WTFVSGFER3JFd2ljSGhTaEtyMkswcmdMSHR4cmhjQVE3Y0lGYlpqN0FuOVlRejRF
RDNscDlad2lBUDlhb25BSXM=
-----END RSA PRIVATE KEY-----

从顶部删除 SSH 密钥部分并将它们放在正确的位置(如果该文件尚不存在,则为 ~/.ssh/id_rsa),或者如果不需要任何文件,则删除整个文件。

答案2

~/.ssh/known_hosts is not a valid known hosts file.

我认为这意味着该文件存在,但不是标准格式。

ssh-keygen更新文件,这样您就不会丢失任何以前的密钥。在编辑任何新条目之前,它能够理解现有条目,这一点很重要。

使用文本编辑器查看现有文件,看看其中有什么内容。它可能为空或被先前的错误损坏。您需要决定是否可以修复它(首先进行备份),或者是否要重新开始。也许只是将其转移到:

~/.ssh/known_hosts.yyyymmdd

这将是其现有创建日期的时间戳,因此ssh-keygen将创建一个新文件。

相关内容