記一次服務器密鑰失效經歷

早上來公司,收到這個消息,個人心是崩潰的。git

「tim老師,測試服務器的遠程登陸密鑰失效了」,我問他,作了什麼改動沒,獲得的確切回覆是「只是上傳了一些代碼」,再次詢問下,堅持只上傳了些代碼,言之鑿鑿。
這個問題可大了,
1. 就這個機器而言,沒有作任何事,「只是上傳了代碼」就致使用了兩年的密鑰不能用了,這個機器是着急用來搭建測試服務器的。這個測試服務器已經搭建了一個多星期了,以前一直說代碼沒準備好,如今又蹦出這個,真是幺蛾子啊。
2. 全部包括正式的服務器與測試服務器一共11臺。要是全部的服務器都在某個時候出這個問題,我就幹不下去了。
ubuntu

先連上去看看,顯示以下,服務器

'' ssh -p 50000 -i pwawscn.pem ubuntu@54.223.xx.xxx
'' ubuntu@54.223.xx.xxx's password:

 

以前配置用密鑰登陸,用了一年多時間了,不可能會跳出這個密碼提示的。首先確定懷疑是sshd-config被改了。查看,沒問題,ssh配置是用key與password均可以登陸。有點納悶,我還開着password登陸啊(時間一長,很久沒摸了,本身記憶也模糊了),隱約記得最開始的時候是開過密碼登陸的,查了查以前的一個記滿密碼的文檔,發現有一個用戶名與密碼,居然登陸上去了,大喜。運維

試着查找了一下兩天以內修改的全部文件,但多是由於文件太多,或者是由於權限的緣由,沒有找到有用的信息。ssh

中午的時候提交給aws的技術支持後(咱們的服務是在aws上),我再次詢問了個人同事,他才告訴我他裝了git,多是由於git從新生成了密鑰,將以前的給覆蓋了。告訴我將git與代碼裝到一塊兒了,不影響系統,應該不會有問題,的吧,我暈死了。工具

確定就是出在這個公鑰密鑰上的了。問題是還能恢復成之前那對公/密鑰嗎?要否則就與其它機器不方便統一管理了,一些腳本也得從新改了。測試

下午在aws技術支持的幫助下,與其它鏈接正常的服務做比較後。確實發現了問題。
在home/ubuntu/.ssh下,正常機器上是下面文件:(兩個文件)spa

authorized_keys known_hosts


而我在出問題的機器上是下面的文件:(三個文件)pwa

id_rsa id_rsa.pub know_hosts


看時間,id_rsaid_rsa.pub就是昨天晚上同事爲git新生成的了。code

aws同窗給出的方案倒也是簡單,直接從正常機器上將authorized_keys複製過來便可。先新建了一個備份文件夾,將不要的東西(包括git的key)都移進去,只留下兩個文件(authorized_keys與known_hosts),便可,都不用重啓服務了。用以前的命令就能直接訪問了。

ssh -p 50000 -i pwawscn.pem ubuntu@54.223.xx.xxx

在網上稍微查了一些生成公鑰私鑰的文章。通常使用ssh-keygen生成id_rsa(私鑰)id_rsa.pub(公鑰),私鑰要本身保存,公鑰要更改成系統識別的文件名authorized_keys置於.ssh下。

鑑於這個公鑰能夠從其它機器copy過來能夠看出,公鑰與密鑰的生成與具體的機器沒有關係,生成過程沒有使用與具體機器相關的信息。還有,這對密鑰是與具體的用戶相聯的。

 

另外,得考慮引進一個成熟的運維工具,準備快速地瀏覽一下ansible這個了。

相關文章
相關標籤/搜索