ssh、散列的known_hosts:提取純文字並使用通配符

ssh、散列的known_hosts:提取純文字並使用通配符

ssh客戶端中,檔案.ssh/knwon_hosts可以使用純文字(例如,在 FreeBSD 12.0 中會發生這種情況):

<ip_address> ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEIlD8R6Kxj9CdToar+3ay4B0yE65dP0EYoRJjEEgLjmvCTIv59DBp+0j2z0+NM0hxxJew79i1bYuN02lEvT2/E=

或者它可能被散列(如在 Ubuntu 18.04 中):

|1|3Et6QShrP2OrD4tWdOGP3jy3YC4=|f2FrJ5tOjjmFSrGWyen1DokJyLc= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIyZLGNvIADWL5SSkohBmDCVpLUzAHNejqQAXP3SSY300YIdNKCn3jqGmFAJiKB1CY0HnVirgFjdAKpyw3+6yzo=

問題1

是否可以從雜湊中取得純文字行known_hosts


烏班圖sshd 線上說明頁指出:

一行中只能出現一個雜湊主機名,且不能套用上述任何否定或通配符運算子。

我不確定這是什麼意思。

問題2

這是否意味著像這樣的地址192.168.*.*永遠不能以 的哈希形式被接受known_hosts,即使它們被創建為純文字然後手動哈希?


正如在一個上一個問題,我正在使用這些客戶端:OpenSSH_7.8p1, OpenSSL 1.1.1a-freebsd 20 Nov 2018OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017

答案1

不,是,按這個順序。雜湊該行的目的是掩蓋您先前連接到的主機,因此雜湊函數的真正目的是使其(出於實際目的)無法判斷主機名稱屬於它。

透過擴展,您無法真正使通配符與散列主機名稱一起使用:如果我想連接到webhost47,並且這些行已散列,我如何找到匹配的行webhost*?哈希是一個活板門,我只能通過哈希webhost*和檢查找到該行。但我還必須檢查?ebhost47w?bhost47??bhost47等等,所以這不太合理。

(我想這個評論也意味著你不能

hashblurb1,hashblurb2 ssh-rsa …

使用散列主機名,即使您可以

hostname1,hostname2 ssh-rsa …

我現在還沒有看到為什麼你不能這樣做的技術原因。

相關內容