SSH: 本地.ssh目錄下的公鑰文件最好刪掉

此次ssh amazon ec2的instance,在家裏電腦登陸OK,到了公司電腦登陸失敗(只支持公鑰機制)。私鑰已經拷貝到公司的ubuntu上了,奇怪。ubuntu

後來發現是.ssh目錄下存在一些公鑰文件致使了這個問題。ssh的時候使用-vvv能夠看到不少調試信息,在這裏看到在ssh認證的時候,發送過去的公鑰不是amazon ec2的公鑰,而是我本地.ssh目錄下另一個公鑰。服務器

因此刪除了.ssh目錄下全部的公鑰文件以後,就OK了。併發

我猜測是這樣:ssh

1. 若是在.ssh/config下配置了針對該Host的IdentityFile,那麼公鑰不會搞錯,ssh會尋找私鑰文件名.pub這樣的文件。spa

2. 貌似私鑰文件中也是包含了公鑰的,由於只給定一個私鑰,ssh也能夠分析併發送公鑰給server調試

3. 貌似ssh的行爲是,若是.ssh目錄下有username@hostname簽名的公鑰,就會去使用這個/些公鑰,而不是使用私鑰中的。server

Anyway,把公鑰文件都刪掉就沒煩惱了,反正通常生成了公鑰私鑰對以後,公鑰都是上傳到服務器側的,再也不須要了。it

[UPDATE]登錄

發現這麼作的一個反作用:Ubuntu的ssh-agent會掃描.ssh下的公鑰而後自動ssh-add,這樣之後登陸只須要輸入一次私鑰的密碼以後就不用輸入了。配置

可是如今.ssh下的公鑰被我刪掉了,因此如今每次都要輸入密碼。

因此能夠將公鑰移到另一個地方,而後每次有新的key的話,用ssh-add手動添加一下。

相關文章
相關標籤/搜索