ssh登錄提示RSA Host key認證失敗的解決方法

【問題描述】

今天用ssh命令登錄一臺此前連接過的服務器,失敗,出現下面的錯誤提示

【問題分析】

從提示看,很明顯,是RSA key不匹配。

根據提示查看本機/home/user/.ssh/目錄下,查看有如下3只文件:

id_rsa

id_rsa.pub

known_hosts

從文件名及查看文件內容可以看出:

1,前兩個是用ssh-keygen命令生成的私鑰和公鑰;

2,known_hosts是ssh訪問過的PC的公鑰記錄,當下次訪問相同PC時ssh會覈對公鑰,如果不同則發出警告,避免受到DNS Hijack攻擊;

從我們遇到的錯誤看,明顯是known_hosts出了問題。

【解決方法】

1,刪除/home/user/.ssh/目錄下的known_hosts文件:

簡單粗暴,如果想快速解決這個問題,可以採用

2,修改known_hosts內容:

根據上面截圖中的提示

Offending RSA key in /home/user/.ssh/known_hosts:6

意思是,known_hosts文件的第6行發生衝突,因此,有兩個方法:

(1)刪除此行所記錄的公鑰:

刪除後的效果,其實等同於方法1,刪除後再次連接時會記錄新的公鑰;

(2)將此行所記錄的公鑰替換爲想連接的PC的公鑰:

對比了對方PC上的/home/user/.ssh/id_rsa.pub文件,發現和成功連接所生成存放在known_host中的公鑰有差異,所以放棄這個方法。

但可以用上述方法(1)中生成的公鑰的替換,如果你想來回倒騰下的話,其實結果和方法(1)相同;

其他博客裏有介紹修改ssh配置的兩種方法,但我嘗試下來都失敗了,不過,仍然分享在這裏,如果有興趣研究的話,可以研究下失敗原因

1,修改/etc/ssh/sshd_config

PermitRootLogin no修改爲yes,
PubkeyAuthentication yes修改爲no
AuthorizedKeysFile %h .ssh/authorized_keys前面加上#屏蔽掉,
PasswordAuthentication no修改爲yes

2,修改/etc/ssh/ssh_config

#  StrictHostKeyChecking ask 
改成
StrictHostKeyChecking no

【備註信息】

最後,附上ssh連接的認證原理:

公鑰:用於加密,存在於服務器
私鑰:用於解密,存在於客戶機

認證流程:
1,客戶端向服務器發出連接請求
2,服務器查看客戶端公鑰(~/.ssh/authorized_keys)該客戶機(客戶機標誌:用戶@Host)對應的公鑰
3,服務器驗證公鑰合法,則產生一條隨機數(challenge),用公鑰加密發送給客戶端
4,客戶端用私鑰解密回傳服務器端。
5,隨機數一致,認證通過
--------------------- 
作者:thdsea4 
來源:CSDN 
原文:https://blog.csdn.net/thdsea4/article/details/74942327?utm_source=copy 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章