如何告訴 ssh 不檢查連接主機的真實性?

如何告訴 ssh 不檢查連接主機的真實性?

我經常需要連接到多個 VPN 網路和提供者後面的主機,位址為10.0.0.*192.168.*.即,每個 VPN 網路在連接時可以自由保留這些範圍中的任何一個。因此,我不能假設將10.0.0.*位址綁定到特定主機,因為這取決於我連接到哪個 VPN。或甚至解決我的無線路由器!

因此,我在我的以下文件中明確禁用了對具有與上述內容相符的「內部網路」位址的主機的嚴格金鑰檢查~/.ssh/config

Host 192.168.* 10.0.0.*
    StrictHostKeyChecking=no
    UserKnownHostsFile=/dev/null

我透過谷歌搜尋並閱讀其他問題和答案找到了這些說明。

問題是,例如,每次我連接到上面的位址範圍時,ssh 10.0.0.16它都會告訴我:

Warning: Permanently added '10.0.0.16' (RSA) to the list of known hosts.

坦白說,這是不真實的,因為無處不在/dev/null(我個人發現它經常被用作醜陋的黑客) - 添加任何東西都沒有永久性/dev/null,不是嗎?它只會讓我的終端變得混亂,每次看到它都會讓我感到厭煩。

有沒有辦法讓 ssh 忽略指紋並且不印出上面令人困惑的訊息?我不想alias ssh='ssh 2>/dev/null'或任何類似的瘋狂的事情。我是否以錯誤的方式處理了這件事?我有什麼選擇?也許還有其他選擇?在我看來,這/dev/null是一種駭客行為,這就是我受到懲罰的原因。

我什麼不想做是 my 用戶端上某些主機名的節點別名~/.ssh/config,例如這個答案。這是因為兩個原因:

  • 我不能簡單地將 ssh 配置為採用別名(使用指令Host)來解析到特定地址 fe,正是因為這些地址被我連接到的不同 VPN 提供者重複使用 -10.0.0.15例如,當連接到一個VPN 時可能是一台主機,而當連接到一個VPN 時可能是一台主機連接到另一個 VPN。我應該將其「拆分」~/.ssh/config為多個,每個 VPN 一個嗎?並相應地利用這些設定檔?

  • 有問題的節點可能是同一內部網路(現在稱為「雲」)上相當大的節點群組的一部分。節點數量最多可達一百個。我不完全確定如何將多個此類節點“批量映射”到它們各自的地址?

答案1

我知道這是一個老問題,但我一直在尋找這個問題的答案。因此,對於任何未來的谷歌用戶,這就是我發現的。

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host

您可以將其綁定到別名,以方便您使用。

alias ssh-nocheck='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

ssh-nocheck user@host

找到了答案https://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

-編輯:格式化

答案2

透過忽略真實性檢查,您將面臨中間人攻擊,因此您可能需要重新考慮。

您可能希望透過將「CheckHostIP」設為 no 來修改 SSH 配置,然後在主機檔案中為每個主機設定條目並按名稱而不是主機進行連線。 (注意我還沒有嘗試過這個,但我相信它會起作用)。有一個這裡也一樣。

相關內容