同一IP位址不同作業系統SSH登入?

同一IP位址不同作業系統SSH登入?

我已將帶有 Raspbian 作業系統的 Raspberry Pi 連接到本地網絡,並使用 ssh 金鑰設定 SSH 登入。我透過(為Raspberry Pi分配靜態IP)成功登入。ssh [email protected]

我現在已經刪除了 Raspbian 作業系統,並插入了一張帶有 Ubuntu Server(無頭)的 SD 卡。

我打開樹莓派並嘗試登錄,但出現錯誤:

ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
ERROR: Someone could be eavesdropping on you right now (man-in-the-middle attack)!
ERROR: It is also possible that a host key has just been changed.
ERROR: The fingerprint for the ECDSA key sent by the remote host is
ERROR: SHA256:asfasfdasdfasfdasfdasdfasdfasdfasdfasfasdf.
ERROR: Please contact your system administrator.
ERROR: Add correct host key in /home/joedoe/.ssh/known_hosts to get rid of this message.
ERROR: Offending ECDSA key in /home/joedoe/.ssh/known_hosts:13
ERROR:   remove with:
ERROR:   ssh-keygen -f "/home/joedoe/.ssh/known_hosts" -R "192.168.5.163"
ERROR: ECDSA host key for 192.168.5.163 has changed and you have requested strict checking.
ERROR: Host key verification failed.

我繼續添加到我的.ssh/config

host 192.168.5.163
    StrictHostKeyChecking no

但現在我明白了

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:asdfasdfasdfasdfasdfasdfasdfasdfasdf.
Please contact your system administrator.
Add correct host key in /home/joedoe/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/joedoe/.ssh/known_hosts:13
  remove with:
  ssh-keygen -f "/home/joedoe/.ssh/known_hosts" -R "192.168.5.163"
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
[email protected]: Permission denied (publickey,password).

顯然,問題是我想在同一 IP 位址上登入兩個不同的作業系統,但新的 Ubuntu 作業系統不會更改 SSH 登入設置,並且不允許我以任何方式登入。

我該如何操作才能交替使用這兩種作業系統?

答案1

有幾種潛在的解決方案。

最簡單的解決方案是davidgo 在他的回答中提出的解決方案,正如他所提到的,這會讓您容易遭受MitM 攻擊(不太可能,但即使在私人情況下,保持良好的安全性也很好)。

  Host 192.168.5.163
      StrictHostKeyChecking no
      UserKnownHostsFile /dev/null

正如 Eugen Rieck 所提議的,一個稍微更好的解決方案是/etc/ssh/ssh_host_*key*在兩個目標作業系統之間同步檔案。

更可靠的方法是專門決定連接到哪個作業系統,因此如果連接到錯誤的作業系統,您確實會收到錯誤。例如,如果使用 ssh 的腳本針對錯誤的作業系統,那麼它們就會失敗。
您可以透過在~/.ssh/ssh_config.

Host raspbian-pi
  Hostname 192.168.5.163
  UserKnownHostsFile ~/.ssh/known_hosts_raspbian

Host centos-pi
  Hostname 192.168.5.163
  UserKnownHostsFile ~/.ssh/known_hosts_centos

然後,您可以連接以ssh <your_user>@raspbian-pi檢索 Raspbian OS 金鑰,然後在 Raspberry Pi 上切換到 CentOS,執行相同的操作ssh <your_user>@centos-pi以取得 CentOS 金鑰。然後,將來,每當您連接到錯誤的作業系統時,您都會收到主機金鑰錯誤。確保第一次使用 SSH 命令時使用正確的作業系統,這樣您就不會意外地將 CentOS 主機金鑰儲存在 Raspbian 已知主機檔案中。

免責聲明:我從未使用過此解決方案,也無法對其進行測試,但根據我的理解和 ssh 文檔,它應該可以正常工作。

答案2

您可以按照錯誤中的說明解決當前問題(每次切換盒子時都必須執行此操作)-

ssh-keygen -f "/home/joedoe/.ssh/known_hosts" -R "192.168.5.163"

您遇到的問題是您的電腦偵測到其登入的系統與之前看到的不同,並且出現警告是為了防止中間人攻擊。

有多種方法可以正確處理這個問題。他們包括:

  1. 為每個框設定名稱/etc/hosts,然後透過名稱而不是 IP 引用 SSH 連線。透過這種方式,SSH 會將不同的伺服器指紋與每個名稱相關聯。

  2. 忽略檢查(這會讓您面臨中間人攻擊,因此只有在您了解並願意接受風險時才這樣做。)您可以透過新增-o UserKnownHostsFile=/dev/null至 ssh 命令或-o StrictHostKeyChecking=no

    2a.您可以建立一個僅忽略一個 IP 的金鑰檢查的配置,方法是將以下內容放入~/.ssh/config

    主機 192.168.5.163 StrictHostKeyChecking 否 UserKnownHostsFile=/dev/null

  3. 我不建議這樣做,除非機器扮演相同的角色,但您可以在兩台伺服器(以及您更改的伺服器上)/etc/ssh上設定相同的主機金鑰。restart sshd這樣,兩台伺服器對於客戶端來說都是一樣的。

答案3

最簡單的方法是將/etc/ssh/ssh_host_*_key*一個安裝複製到另一個安裝 - 這將為兩個作業系統提供相同的主機金鑰,從而獲得指紋。

答案4

我個人對我的所有 Linux 伺服器使用 OpenSSH 憑證授權單位。這在設定新設備和編排我的終端設備(桌上型電腦、筆記型電腦和跳轉主機)時省去了很多麻煩,這是我之前所使用的部落格寫了關於

雖然此功能最初並非針對此(不尋常)用例而設計,但它提供了解決該問題的替代解決方案。只需使用 CA 的私鑰對兩組主機金鑰進行簽名,並將公共部分添加到您的known_hosts文件中,您的SSH 用戶端就會自動信任兩組主機金鑰,而不會因差異而對您大喊大叫。不過,您可能仍需要事先刪除任何記住的主機金鑰ssh-keygen -R

這樣做的優點是兩個系統都可以保持其主機密鑰分離且不同,這使您能夠通過主機密鑰(和證書- 有一個“身份”字段,您可以在簽署證書時自定義)來區分它們。這也是安全的,因為您不必盲目信任出現在該特定 IP 位址的任意主機。

即使您想保護自己免受金鑰洩露,也可以在簽署憑證時添加“允許的名稱/IP 位址”作為“主體”,例如:

ssh-keygen -s my_ca -I "RaspOS on RPi" -h -n 192.0.2.0 ssh_host_rsa_key.pub

該證書將不是除非由位於 的主機提供192.0.2.0,否則應受到信任,除非攻擊者以某種方式劫持您的流量另外主機密鑰和憑證。


好吧,現在我必須承認在兩個作業系統之間複製主機金鑰更容易,因為它們畢竟位於同一台實體電腦上。

相關內容