Ubuntu

SSH 主機密鑰似乎意外更改

  • June 2, 2019

/etc/ssh/sshd_config我在 Ubuntu 12.04 測試伺服器上推出了一個新的 Puppet。該配置與之前的配置完全相同,只是刪除了以下行:

HostKey /etc/ssh/ssh_host_ecdsa_key

我注意到我從那時開始嘗試連接到盒子時遇到了很多類似但不同的錯誤,例如:“ *%hostname%的 RSA 主機密鑰已更改,相應 IP 地址%ipaddress%*的密鑰 未更改。 "

我認為這是因為我的電腦以前預設使用 ECDSA 密鑰,而現在該密鑰不可用。所以我將該行添加回sshd_config並重新啟動了 SSH。

它並沒有完全解決問題,從那時起我就一直遇到問題。我將能夠連接到伺服器好幾次,甚至可能連續幾天。然後突然之間我開始收到主機密鑰已更改的錯誤,並且伺服器停止接受我的公鑰進行身份驗證。

似乎一旦我把它弄亂了一會兒並從不同的位置連接,我就會突然能夠再次連接我的公鑰,並且我不再收到關於可能的中間人的錯誤攻擊。

幾天前我嘗試重新生成所有 3 個主機密鑰(刪除它們並執行dpkg-reconfigure openssh-server重新生成它們)。正如預期的那樣,我必須刪除舊密鑰並接受新密鑰才能連接。我想也許它當時已經解決了,但現在問題又回來了。

自從我上次重新生成它們以來,沒有任何東西修改過任何主機密鑰/etc/ssh/- 所以可能導致我經常無法連接,我的公鑰不起作用,然後最終接受新密鑰並讓事情再次開始正常工作一陣子?

當事情不起作用時(當我收到有關主機密鑰更改的錯誤,然後伺服器停止接受我的公鑰時),沒有任何內容寫入伺服器的/var/log/auth.log. 這讓我認為它有時可能會以某種方式訪問另一台機器,但我不知道這怎麼可能,因為 DNS 條目是正確的並且總是返回相同的 IP 地址。

您收到該消息的常見原因有三個。

按照機率的粗略順序,它們是:

  1. 您自己更改了主機密鑰,並且沒有在您的客戶端電腦上清除或更新它們。

這是最常見的情況。校驗和密鑰文件並且絕對確定它們沒有改變。 2. 您已更改 SSH 配置以提供(或請求)與以前不同的密鑰類型。

例如,您以前需要 RSA 或 DSA 密鑰,現在您使用 ECDSA——這是“密鑰更改”。

如果是這種情況,請驗證並接受新密鑰(或者如果這不是您想要的,請撤消更改)。

(聽起來您處於情況#2 - 撤消更改,重新啟動 sshd,並驗證事情是否按預期工作。如果您尚未在任何地方接受新密鑰,撤消更改應該會使錯誤消失。) 3. 有人在做一些討厭

的事情 SSH 警告您的中間人攻擊已經抬起了醜陋的腦袋。有人正在積極嘗試攔截您的通信以竊取您的私鑰或做一些您幾乎肯定不希望他們做的事情。


如果您已經消除了 1,並且您確定您沒有做 2,那麼您應該假設 3,直到您可以證明不是這樣。這意味著不要登錄。– 當使用者無視巨大的警告橫幅並將他們的密鑰交給攻擊者時,世界上所有的 SSH 安全都無濟於事。

調查您和您的伺服器之間的通道,在您嘗試登錄時檢查伺服器的連接日誌(來自已知良好的終端)等等 - 這裡有很多方法可以執行攻擊,我無法列舉所有可能的對策和檢測策略,但IT 安全部門的人肯定會有一些想法。

引用自:https://serverfault.com/questions/537035