從known_hosts 中刪除金鑰

從known_hosts 中刪除金鑰

在過去的幾周里,我建立了幾個虛擬機器。問題是,它.ssh/known_hosts給了我中間的人警告。發生這種情況是因為另一個指紋與虛擬機器 IP 關聯。

然而,在.ssh/known_hosts文件中,我沒有找到與IP相關的記錄,只有兩個奇怪的類似密鑰的字串和「ssh-rsa」。

有誰知道如何從中刪除舊密鑰known_hosts

答案1

sed -i '6d' ~/.ssh/known_hosts

將修改檔案 ~/.ssh/known_hosts:6 ,刪除第 6 行。

在我看來,ssh-keygen -R對於 openssh 高級用戶來說,使用是一個更好的解決方案,而您的常規 Linux 管理員則可以透過使用上述方法更好地保持他/她的 sed 技能新鮮。

答案2

-R為此有一個 ssh-keygen 開關 ( )。

man ssh-keygen內容如下:

-R 主機名稱

hostname從檔案中刪除屬於的所有鍵known_hosts。此選項對於刪除雜湊主機很有用(請參閱-H上面的選項)。

答案3

最簡單的解決方案是:

rm -f .ssh/known_hosts

ssh 將再次重新建立該文件,但您將失去對其他主機的金鑰檢查!

或者,您可以使用:

ssh-keygen -R "hostname"

或 ssh「中間人」訊息應指示known_hosts 檔案的哪一行具有違規指紋。編輯文件,跳到該行並將其刪除。

答案4

所有答案都很好,但對於真正的 SSH 專業版,我們缺少如何刪除帶有(非標準)連接埠號碼的 ssh 簽名的資訊。

  • 簡單的 SSH 主機簽章刪除指令:

      ssh-keygen -R example.com
    
  • 複雜的 ssh 金鑰刪除,例如您在非標準連接埠 222 上連接到 ssh:

      ssh example.com -p 222
    

你會收到警告,要刪除它,你需要使用方括號冒號連接埠號碼:

    ssh-keygen -R [example.com]:222

請注意,同一台主機可能會有 IP 記錄,因此您還需要刪除該記錄。

希望這對非標準配置用戶有所幫助。

相關內容