检查known_hosts中自定义端口下是否存在主机名

检查known_hosts中自定义端口下是否存在主机名

我需要添加检查主机名是否已存在于known_hosts文件中。

通常我会做这样的事情:

ssh-keygen -H -F hostname

然而,在这种特殊情况下,这似乎对我不起作用。我使用端口 2102 连接到主机,如下所示:

ssh user@myhost -p 2102

我被要求将主机名添加到known_hosts文件中,我说是。之后我运行ssh-keygen -H -F myhost但收到空结果。

更糟糕的是,它known_hosts被散列了。

这与端口 22 完美配合,因此如果我登录到ssh user@myotherhost,保存已知主机并运行,ssh-keygen -H -F myotherhost我会收到文件中的确切行。

那么,如何调整命令以使用端口 2102?

答案1

您可以使用以下格式:[hostname]:2121,因为它存储在文件中known_hosts(注意,您需要使用方括号!):

ssh-keygen -H -F "[hostname]:2121"

概念证明(我的最小测试用例的转录):

$ echo "[hostname]:2121 ssh-rsa AAA...==" > known_hosts
$ ssh-keygen -Hf known_hosts 
known_hosts updated.
Original contents retained as known_hosts.old
WARNING: known_hosts.old contains unhashed entries
Delete this file to ensure privacy of hostnames
$ ssh-keygen -H -F "[hostname]:2121" -f known_hosts
|1|R21497dX9jN052A92GSoVFbuTPM=|lRtIr6O564EaFG0SsIulNAWpcrM= ssh-rsa AAA...==

您可能需要使用 IP 地址而不是主机名,但通常应该可以工作。

相关内容