Ssh

檢查 known_hosts 中自定義埠下是否存在主機名

  • May 29, 2016

如果主機名已經存在於 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 地址而不是主機名,但它通常應該可以工作。

引用自:https://unix.stackexchange.com/questions/274469