我需要添加检查主机名是否已存在于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 地址而不是主机名,但通常应该可以工作。