在過去的幾周里,我建立了幾個虛擬機器。問題是,它.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 記錄,因此您還需要刪除該記錄。
希望這對非標準配置用戶有所幫助。