暫時忽略我的“~/.ssh/known_hosts”檔案?

暫時忽略我的“~/.ssh/known_hosts”檔案?

有沒有辦法暫時忽略我的~/.ssh/known_hosts文件?

mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$ 

筆記:

..透過一些答案/評論,我意識到我的問題有點誤導,所以很短預期的行為),所以這是正常的(就我而言)為什麼我想看到“忽略它”,背後有一個正當的理由)

答案1

您可以使用暫時ssh -o StrictHostKeyChecking=no關閉檢查。known_hosts但我建議不要這樣做。您應該真正檢查一下主機金鑰發生變化的原因。

~/.ssh/config另一個選擇是為相關主機新增特定條目。如果您有某個主機每次重新啟動時都會產生新的主機金鑰,並且每天會出於正當原因重新啟動幾次,那麼這可能是有效的方法。

Host <your problematic host>
  StrictHostKeyChecking no

答案2

若要在 POSIX 環境中完全忽略已知的主機文件,請將GlobalKnownHostsFileUserKnownHostsFile選項設為/dev/null

ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host

設定該StrictHostKeyChecking=no選項將允許您透過 SSH 進行連接仍會顯示警告

ssh -o StrictHostKeyChecking=no user@host

正如其他人指出的那樣,解決根本問題可能會更好。你可以考慮SSH證書認證例如,驗證主機。

答案3

如果您重新安裝了伺服器,因此標識已更改,您只需刪除指定的第 155 行即可/Users/alexus/.ssh/known_hosts繼續。

如果您在不同的專用網路之間切換,則應該使用主機名稱進行連接,因為 ssh 用戶端也會根據主機名稱儲存金鑰。將這樣的內容添加到您的/etc/hosts

10.52.11.171 server1
10.52.11.171 server2

然後ssh server1在連接到子網路 1 和ssh server2連接到子網路 2 時使用。這樣,兩台伺服器就可以擁有不同的主機金鑰。

答案4

-o StrictHostKeyChecking=no僅當主機不存在於known_hosts 檔案中時才有效。

我認為它更乾淨(沒有警告),如果您希望主機金鑰可能由於虛擬機器克隆而改變,則強制忽略此類主機,如下所示:

# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
    ssh-keygen -R ${host_ip}
    echo ${host_key} >>  ~/.ssh/known_hosts
}

# connect as normal way
ssh root@${host_ip} "hostname"

相關內容