SSH證書登錄方式(無密碼驗(yàn)證登錄)
作者:xcbeyond
瘋狂源自夢(mèng)想,技術(shù)成就輝煌!微信公眾號(hào):《程序猿技術(shù)大咖》號(hào)主,專注后端開發(fā)多年,擁有豐富的研發(fā)經(jīng)驗(yàn),樂于技術(shù)輸出、分享,現(xiàn)階段從事微服務(wù)架構(gòu)項(xiàng)目的研發(fā)工作,涉及架構(gòu)設(shè)計(jì)、技術(shù)選型、業(yè)務(wù)研發(fā)等工作。對(duì)于Java、微服務(wù)、數(shù)據(jù)庫、Docker有深入了解,并有大量的調(diào)優(yōu)經(jīng)驗(yàn)。
常常在工作中需要在各個(gè)Linux機(jī)間進(jìn)行跳轉(zhuǎn),每次密碼的輸入成了麻煩,而且也不安全。在實(shí)際使用中,在windows下常使用secureCRT工具或teraterm工具進(jìn)行SSH登錄,以及實(shí)現(xiàn)hadoop集群部署要求的無密碼跳轉(zhuǎn)問題。
SSH分為有密碼登錄和證書登錄??紤]到安全性因素,一般都是采用證書登錄,即:每次登錄無需輸入密碼。如果是密碼登錄,很容易遭受到外來的攻擊。
一、證書登錄的過程:
1.客戶端生成證書的私鑰和公鑰。
私鑰放在客戶端,公鑰上傳到服務(wù)端(遠(yuǎn)程登陸端)。
一般為了安全,訪問有黑客拷貝客戶端的私鑰,客戶端在生成私鑰時(shí),會(huì)設(shè)置一個(gè)密碼,以后每次登錄ssh服務(wù)器時(shí),客戶端都要輸入密碼解開私鑰(如果工作中,你使用了一個(gè)沒有密碼的私鑰,有一天服務(wù)器被黑了,你是跳到黃河都洗不清)。
2.服務(wù)器添加信用公鑰。
把客戶端生成的公鑰,上傳到ssh服務(wù)器,添加到指定的文件中,這樣,就完成ssh證書登錄的配置了。
假設(shè)客戶端想通過私鑰要登錄其他ssh服務(wù)器,同理,可以把公鑰上傳到其他ssh服務(wù)器。
實(shí)際應(yīng)用舉例:
工生成好私鑰和公鑰(千萬要記得設(shè)置私鑰密碼),然后把公鑰發(fā)給運(yùn)維人員,運(yùn)維人員會(huì)登記你的公鑰,為你開通一臺(tái)或者多臺(tái)服務(wù)器的權(quán)限,然后員工就可以通過一個(gè)私鑰,登錄他有權(quán)限的服務(wù)器做系統(tǒng)維護(hù)等工作,所以,員工是有責(zé)任保護(hù)他的私鑰的,如果被別人惡意拷貝,你又沒有設(shè)置私鑰密碼,那么,服務(wù)器就全完了,員工也可以放長(zhǎng)假了。
二、證書登陸實(shí)例:
環(huán)境:A通過ssh方式登陸B(tài),即:A為本地機(jī),B為遠(yuǎn)程登陸server
1.A機(jī)配置
①生成公鑰和私鑰
# ssh-keygen -t rsa (連續(xù)三次回車,即在本地生成了公鑰和私鑰,不設(shè)置密碼)
②將公鑰拷到B端
# scp root@B的iP:root/.ssh/id_rsa.pub ./.ssh/id_rsa.pub (需要輸入密碼)
2.B機(jī)配置
①創(chuàng)建authorized_keys2文件
# touch /root/.ssh/authorized_keys2 (如果已經(jīng)存在這個(gè)文件, 跳過這條)
②追加公鑰到authorized_keys2中
# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys2 (將id_rsa.pub的內(nèi)容追加到 authorized_keys2 中)
3.SSH證書登陸驗(yàn)證
# ssh root@B的iP (因?yàn)闆]有設(shè)置私鑰密碼, 所以不需要密碼, 登錄成功)
三、其他應(yīng)用場(chǎng)景:
SecureCRT密鑰key遠(yuǎn)連接程ssh證書登錄Linux
國內(nèi)大部分人用的系統(tǒng)是windows,而windows下有很多ssh客戶端圖形工作,最流行,功能最強(qiáng)大的就是SecureCRT了,所以我會(huì)單獨(dú)針對(duì)SecureCRT簡(jiǎn)單講下實(shí)現(xiàn)ssh證書登錄Linux的要點(diǎn),步驟如下:
1:在SecureCRT創(chuàng)建私鑰和公鑰:
主菜單->工具->創(chuàng)建公鑰->選擇RSA->填寫私鑰的密碼->密鑰長(zhǎng)度填為1024->點(diǎn)擊完成,生成兩個(gè)文件,默認(rèn)名為identity和identity.pub
2.把私鑰和公鑰轉(zhuǎn)換為OpenSSH格式:
主菜單->工具->轉(zhuǎn)換私鑰到OpenSSH格式->選擇剛生成私鑰文件identity->輸入私鑰的密碼->生成兩個(gè)文件,指定為id_rsa, id_rsa.pub
3.把公鑰id_rsa.pub上傳到ssh服務(wù)器,按照之前配置服務(wù)器端的證書,再配置一次。
另外,如果你之前用windows的 SecureCRT的證書登錄linux的,有一天你換成了linux,并希望通過原來的私鑰登錄公司的服務(wù)器,那么可以把id_rsa拷貝倒~/.ssh/目錄下。
備注:
ssh對(duì)證書的文件和目錄權(quán)限比較敏感,要么根據(jù)出錯(cuò)提示設(shè)置好文件和目錄權(quán)限,要么是把StrictModes選項(xiàng)設(shè)置為no。
hadoop部署的無密碼ssh登錄
hadoop要求master要無密碼跳轉(zhuǎn)到每個(gè)slave,那么master就是上文中的ssh客戶端了,步驟如下:
1.在hadoop master上,生成公鑰私鑰,這個(gè)場(chǎng)景下,私鑰不能設(shè)置密碼。
2.把公鑰上傳到每個(gè)slave上指定的目錄,這樣就完成了ssh的無密碼跳轉(zhuǎn)了。
四、總結(jié):
ssh證書登錄,在實(shí)際工作才是最常用的登錄方式,本人結(jié)合了真正工作的場(chǎng)景普及了ssh證書登錄的知識(shí),并根據(jù)流行的hadoop部署和windows下最常用的SecureCRT實(shí)例講解了證書登錄。