SSH證書登錄方式(無密碼驗證登錄)

作者:xcbeyond
瘋狂源自夢想,技術(shù)成就輝煌!微信公眾號:《程序猿技術(shù)大咖》號主,專注后端開發(fā)多年,擁有豐富的研發(fā)經(jīng)驗,樂于技術(shù)輸出、分享,現(xiàn)階段從事微服務(wù)架構(gòu)項目的研發(fā)工作,涉及架構(gòu)設(shè)計、技術(shù)選型、業(yè)務(wù)研發(fā)等工作。對于Java、微服務(wù)、數(shù)據(jù)庫、Docker有深入了解,并有大量的調(diào)優(yōu)經(jīng)驗。 









常常在工作中需要在各個Linux機間進行跳轉(zhuǎn),每次密碼的輸入成了麻煩,而且也不安全。在實際使用中,在windows下常使用secureCRT工具或teraterm工具進行SSH登錄,以及實現(xiàn)hadoop集群部署要求的無密碼跳轉(zhuǎn)問題。

        SSH分為有密碼登錄和證書登錄??紤]到安全性因素,一般都是采用證書登錄,即:每次登錄無需輸入密碼。如果是密碼登錄,很容易遭受到外來的攻擊。
一、證書登錄的過程:

       1.客戶端生成證書的私鑰和公鑰。

         私鑰放在客戶端,公鑰上傳到服務(wù)端(遠程登陸端)。

        一般為了安全,訪問有黑客拷貝客戶端的私鑰,客戶端在生成私鑰時,會設(shè)置一個密碼,以后每次登錄ssh服務(wù)器時,客戶端都要輸入密碼解開私鑰(如果工作中,你使用了一個沒有密碼的私鑰,有一天服務(wù)器被黑了,你是跳到黃河都洗不清)。

        2.服務(wù)器添加信用公鑰。

        把客戶端生成的公鑰,上傳到ssh服務(wù)器,添加到指定的文件中,這樣,就完成ssh證書登錄的配置了。

        假設(shè)客戶端想通過私鑰要登錄其他ssh服務(wù)器,同理,可以把公鑰上傳到其他ssh服務(wù)器。

       

        實際應(yīng)用舉例:

        工生成好私鑰和公鑰(千萬要記得設(shè)置私鑰密碼),然后把公鑰發(fā)給運維人員,運維人員會登記你的公鑰,為你開通一臺或者多臺服務(wù)器的權(quán)限,然后員工就可以通過一個私鑰,登錄他有權(quán)限的服務(wù)器做系統(tǒng)維護等工作,所以,員工是有責(zé)任保護他的私鑰的,如果被別人惡意拷貝,你又沒有設(shè)置私鑰密碼,那么,服務(wù)器就全完了,員工也可以放長假了。
二、證書登陸實例:
  環(huán)境:A通過ssh方式登陸B(tài),即:A為本地機,B為遠程登陸server

           1.A機配置

          ①生成公鑰和私鑰

             # ssh-keygen -t rsa           (連續(xù)三次回車,即在本地生成了公鑰和私鑰,不設(shè)置密碼)

         ②將公鑰拷到B端
         # scp  root@B的iP:root/.ssh/id_rsa.pub  ./.ssh/id_rsa.pub  (需要輸入密碼)

       2.B機配置

         ①創(chuàng)建authorized_keys2文件

         # touch /root/.ssh/authorized_keys2      (如果已經(jīng)存在這個文件, 跳過這條)

        ②追加公鑰到authorized_keys2中

        # cat /root/.ssh/id_rsa.pub   >> /root/.ssh/authorized_keys2 (將id_rsa.pub的內(nèi)容追加到 authorized_keys2 中)

       3.SSH證書登陸驗證

       # ssh root@B的iP           (因為沒有設(shè)置私鑰密碼, 所以不需要密碼, 登錄成功)
三、其他應(yīng)用場景:

       SecureCRT密鑰key遠連接程ssh證書登錄Linux

       國內(nèi)大部分人用的系統(tǒng)是windows,而windows下有很多ssh客戶端圖形工作,最流行,功能最強大的就是SecureCRT了,所以我會單獨針對SecureCRT簡單講下實現(xiàn)ssh證書登錄Linux的要點,步驟如下:

      1:在SecureCRT創(chuàng)建私鑰和公鑰:

        主菜單->工具->創(chuàng)建公鑰->選擇RSA->填寫私鑰的密碼->密鑰長度填為1024->點擊完成,生成兩個文件,默認名為identity和identity.pub

       2.把私鑰和公鑰轉(zhuǎn)換為OpenSSH格式:

         主菜單->工具->轉(zhuǎn)換私鑰到OpenSSH格式->選擇剛生成私鑰文件identity->輸入私鑰的密碼->生成兩個文件,指定為id_rsa, id_rsa.pub

      3.把公鑰id_rsa.pub上傳到ssh服務(wù)器,按照之前配置服務(wù)器端的證書,再配置一次。

      另外,如果你之前用windows的 SecureCRT的證書登錄linux的,有一天你換成了linux,并希望通過原來的私鑰登錄公司的服務(wù)器,那么可以把id_rsa拷貝倒~/.ssh/目錄下。

      備注:

      ssh對證書的文件和目錄權(quán)限比較敏感,要么根據(jù)出錯提示設(shè)置好文件和目錄權(quán)限,要么是把StrictModes選項設(shè)置為no。
      hadoop部署的無密碼ssh登錄

        hadoop要求master要無密碼跳轉(zhuǎn)到每個slave,那么master就是上文中的ssh客戶端了,步驟如下:

        1.在hadoop master上,生成公鑰私鑰,這個場景下,私鑰不能設(shè)置密碼。

        2.把公鑰上傳到每個slave上指定的目錄,這樣就完成了ssh的無密碼跳轉(zhuǎn)了。
四、總結(jié):

       ssh證書登錄,在實際工作才是最常用的登錄方式,本人結(jié)合了真正工作的場景普及了ssh證書登錄的知識,并根據(jù)流行的hadoop部署和windows下最常用的SecureCRT實例講解了證書登錄。