2009-04-09 73 views
14

我有一臺nat防火牆後面的2臺ssh服務器,每天都在更改其WAN IP地址。它們在給定的時間總是處於相同的WAN IP地址,但在不同的端口上。如何處理同一(但不斷變化的)IP地址上的兩臺不同主機的ssh主機密鑰驗證?

我連接到服務器A這樣:

ssh -p 22001 [email protected] 

和服務器B:

ssh -p 22002 [email protected] 

所以我得到了相同的IP 2個不同的主機密鑰,也是IP更改時即使是同一主機的不同IP。

我必須繼續刪除known_hosts文件中的其他密鑰或舊密鑰(在發生IP更改的情況下)。

我很猶豫是否將密鑰驗證關閉,因爲這樣做不太安全。但是始終發出警告也是不安全的(因爲我一直忽略這些警告)。有更好的解決方案嗎?

這是在這裏與我的老問題,但不一樣的:

SSH login warning message on a server with 2 DNS names

+0

爲什麼這個封閉的,而不是移到[超級用戶](HTTPS ://superuser.com/)或[Unix&Linux](https://unix.stackexchange.com/)? – 2017-09-08 20:00:24

回答

32

我認爲這將工作:

.ssh目錄中創建一個config文件,如下所示:

Host server1 
    Hostname x1.example.com 
    HostKeyAlias server1 
    CheckHostIP no 
    Port 22001 
    User karl 

Host server2 
    Hostname x2.example.com 
    HostKeyAlias server2 
    CheckHostIP no 
    Port 22002 
    User karl 

說明下面(來自man ssh_config

CheckHostIP

如果這個標誌被設置爲 「是」,SSH(1)將額外檢查 主機IP地址中的known_hosts 文件。這允許ssh檢測由於DNS欺騙而導致的主機密鑰是否發生更改 。 如果該選項設置爲「否」,則不會執行 檢查。 默認值爲「是」。

HostKeyAlias

指定查找或保存在主機密鑰 數據庫文件的主機密鑰時,應代替真實 主機名的別名。此選項對於隧道SSH 連接或運行在單個主機上的多個服務器很有用。

UsernamePort線避免你不得不放棄在命令行上的選擇,太多,所以你可以用:

% ssh server1 
% ssh server2 
+0

這太酷了!非常好,謝謝! – user89021 2009-04-09 19:39:30

相關問題