本文首發於爛泥行天下
在上一篇文章《爛泥:學習ssh之ssh無密碼登陸》中,我們講解了如何使用ssh密鑰,免密碼登陸服務器。
這篇文章我們再來講解,如何把已經生成的密鑰隨身攜帶。
有關如何生成ssh密鑰的詳細步驟,可以查看上一篇文章《爛泥:學習ssh之ssh無密碼登陸》。
一、生成密鑰
現在我們通過xshell生成密鑰,注意:本章節,我只進行截圖,不做進一步的文章說明。
如下:
我們現在有了公鑰和私鑰:id_dsa_150518.pub、id_dsa_150518,把公鑰id_dsa_150518.pub上傳到需要連接的服務器192.168.1.9的ilanni用戶的對應目錄下。如下:
ifconfig eth0|grep 'inet addr'|awk '{print $2}'|cut -d: -f2
cat .ssh/authorized_keys
現在我們就可以把這個密鑰id_dsa_150518隨身攜帶,無論在什麼地方都可以連接192.168.1.9服務器。
注意:我們現在所說的密鑰,其實就是上面xshell生成的ssh私鑰。
同時還要注意私鑰id_dsa_150518,我們可以攜帶該私鑰文件,也可以把該私鑰的內容複製到其他文件中也行。如下:
注意:ssh私鑰的內容在複製,不能缺少任何一個字符。
二、windows下連接ssh服務器
假如,我們現在到一個新的地方,使用的OS是windows,而ssh的私鑰就在我們身邊的話,我們就可以通過該私鑰連接ssh服務器了。
在此,我們還是以使用xshell來連接ssh服務器爲例,進行講解。當然你也可以使用其他的ssh客戶端軟件,進行連接。
使用如下命令連接ssh服務器,如下:
此時xshell會彈出要你輸入密碼的界面。如下:
我們不選擇Password選項,要選擇Public Key選項。然後選擇“瀏覽”--“文件”,如下:
找到我們攜帶的ssh的私鑰文件id_dsa_150518,如下:
選擇私鑰文件,如下:
通過上圖,我們可以很明顯的看出在連接192.168.1.9服務器時,xshell確實沒有提示我們要輸入密碼。
注意:如果你的私鑰文件不是隨身攜帶而是記住私鑰內容的話,你也可以建立一個文件,比如ilanni.txt,把私鑰的內容複製到ilanni.txt進去保存。
在連接ssh服務器選擇密鑰文件時,只需選擇ilanni.txt文件即可。
三、linux下連接ssh服務器
在第二章節中,我們講解了如何在windows下通過ssh的私鑰連接ssh服務器。在這章節,我們再來講解如何在linux下,通過ssh私鑰連接ssh服務器。
先把ssh的私鑰上傳到linux主機上或者在linux主機上新建一任意文件,把私鑰的內容複製到該文件中,然後使用如下命令進行連接:
ssh -i id_dsa_150518 [email protected]
通過上圖,我們可以很明顯的看出,連接ssh服務器192.168.1.9還是需要輸入用戶密碼的。
是我們的操作不對還是怎麼回事呢?
如果你仔細看上述的提示的話,你會發現這個是因爲ssh私鑰用戶權限的設置太大,不安全造成的。
ssh爲了安全起見,對私鑰文件的權限一般要設置爲600,即用戶自己對該私鑰文件具有讀寫權限,其所在的用戶組及其他用戶組對私鑰文件不具有任何權限。
我們現在只需要把ssh私鑰文件的權限設置爲600即可,如下:
chmod 600 id_dsa_150518
再次使用ssh -i id_dsa_150518 [email protected]命令進行連接,如下:
通過上圖,我們可以很明顯的看出,現在我們已經進入到192.168.1.9這臺服務器中,而且是沒有輸入密碼的。
注意:上述命令中的-i參數用於指定ssh私鑰文件。
有關ssh命令的相關參數使用方法,可以參考ssh的幫助。如下:
ssh --help
到此有關ssh密鑰隨身攜帶的全部內容就結束了。