SSH分為有password登錄和證書登錄。考慮到安全性因素,一般都是採用證書登錄。即:每次登錄無需輸入password。
假設是password登錄,非常easy遭受到外來的攻擊。
一、證書登錄的過程:
1.client生成證書的私鑰和公鑰。
私鑰放在client。公鑰上傳到服務端(遠程登陸端)。
一般為了安全,訪問有黑客拷貝client的私鑰。client在生成私鑰時。會設置一個password,以后每次登錄sshserver時,client都要輸入password解開私鑰(假設工作中,你使用了一個沒有password的私鑰,有一天server被黑了,你是跳到黃河都洗不清)。
2.server加入信用公鑰。
把client生成的公鑰,上傳到sshserver,加入到指定的文件里。這樣,就完畢ssh證書登錄的配置了。
如果client想通過私鑰要登錄其它sshserver,同理。能夠把公鑰上傳到其它sshserver。
實際應用舉例:
工生成好私鑰和公鑰(千萬要記得設置私鑰password)。然后把公鑰發給運維人員,運維人員會登記你的公鑰。為你開通一台或者多台server的權限。然后員工就能夠通過一個私鑰,登錄他有權限的server做系統維護等工作。所以。員工是有責任保護他的私鑰的。假設被別人惡意拷貝。你又沒有設置私鑰password。那么,server就全完了,員工也能夠放長假了。
二、證書登陸實例:
環境:A通過ssh方式登陸B。即:A為本地機,B為遠程登陸server
1.A機配置
①生成公鑰和私鑰
# ssh-keygen -t rsa (連續三次回車,即在本地生成了公鑰和私鑰,不設置password)
②將公鑰拷到B端
# scp root@B的iP:root/.ssh/id_rsa.pub ./.ssh/id_rsa.pub (須要輸入password)
2.B機配置
①創建authorized_keys2文件
# touch /root/.ssh/authorized_keys2 (假設已經存在這個文件, 跳過這條)
②追加公鑰到authorized_keys2中
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys2 (將id_rsa.pub的內容追加到 authorized_keys2 中)
3.SSH證書登陸驗證
# ssh root@B的iP (由於沒有設置私鑰password, 所以不須要password, 登錄成功)
三、其它應用場景:
SecureCRT密鑰key遠連接程ssh證書登錄Linux
國內大部分人用的系統是windows,而windows下有非常多sshclient圖形工作,最流行,功能最強大的就是SecureCRT了,所以我會單獨針對SecureCRT簡單講下實現ssh證書登錄Linux的要點,過程例如以下:
1:在SecureCRT創建私鑰和公鑰:
主菜單->工具->創建公鑰->選擇RSA->填寫私鑰的password->密鑰長度填為1024->點擊完畢,生成兩個文件,默認名為identity和identity.pub
2.把私鑰和公鑰轉換為OpenSSH格式:
主菜單->工具->轉換私鑰到OpenSSH格式->選擇剛生成私鑰文件identity->輸入私鑰的password->生成兩個文件,指定為id_rsa, id_rsa.pub
3.把公鑰id_rsa.pub上傳到sshserver,依照之前配置server端的證書,再配置一次。
另外,假設你之前用windows的 SecureCRT的證書登錄linux的,有一天你換成了linux,並希望通過原來的私鑰登錄公司的server,那么能夠把id_rsa拷貝倒~/.ssh/文件夾下。
備注:
ssh對證書的文件和文件夾權限比較敏感,要么依據出錯提示設置好文件和文件夾權限。要么是把StrictModes選項設置為no。
hadoop部署的無passwordssh登錄
hadoop要求master要無password跳轉到每一個slave,那么master就是上文中的sshclient了。過程例如以下:
1.在hadoop master上,生成公鑰私鑰。這個場景下。私鑰不能設置password。
2.把公鑰上傳到每一個slave上指定的文件夾。這樣就完畢了ssh的無password跳轉了。
四、總結:
ssh證書登錄,在實際工作才是最經常使用的登錄方式,本人結合了真正工作的場景普及了ssh證書登錄的知識,並依據流行的hadoop部署和windows下最經常使用的SecureCRT實例解說了證書登錄。