Ssh
檢查 known_hosts 中自定義埠下是否存在主機名
如果主機名已經存在於 known_hosts 中,我需要添加一個檢查。
通常我會做這樣的事情:
ssh-keygen -H -F hostname
但是,在這種特殊情況下,這似乎對我不起作用。我使用埠 2202 連接到主機,如下所示:
ssh user@myhost -p 2102
我要求將主機名添加到 known_hosts,我說是的。之後我執行“ssh-keygen -H -F myhost”但收到空結果。更糟糕的是,known_hosts 是散列的。
這與埠 22 完美配合,所以如果我登錄到“ssh user@myotherhost”,保存已知主機並執行“ssh-keygen -H -F myotherhost”,我會從文件中收到確切的行。
那麼,如何調整命令以使用埠 2102?
您可以使用這種格式:
[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 地址而不是主機名,但它通常應該可以工作。