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

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

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

一、證書登錄的過程:

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

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

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

2.伺服器添加信用公鑰。

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

假設客戶端想通過私鑰要登錄其他ssh伺服器,同理,可以把公鑰上傳到其他ssh伺服器。

實際應用舉例:

工生成好私鑰和公鑰(千萬要記得設置私鑰密碼),然後把公鑰發給運維人員,運維人員會登記你的公鑰,為你開通一台或者多台伺服器的許可權,然後員工就可以通過一個私鑰,登錄他有許可權的伺服器做系統維護等工作,所以,員工是有責任保護他的私鑰的,如果被別人惡意拷貝,你又沒有設置私鑰密碼,那麼,伺服器就全完了,員工也可以放長假了。

二、證書登陸實例:

環境:A通過ssh方式登陸B,即:A為本地機,B為遠程登陸server

1.A機配置

①生成公鑰和私鑰

(連續三次回車,即在本地生成了公鑰和私鑰,不設置密碼)

# ssh-keygen -t rsa

②將公鑰拷到B端

# scp root@B的iP:root/.ssh/id_rsa.pub ./.ssh/id_rsa.pub (需要輸入密碼)

2.B機配置

①創建authorized_keys2文件

(如果已經存在這個文件, 跳過這條)

# touch /root/.ssh/authorized_keys2

②追加公鑰到authorized_keys2中

(將id_rsa.pub的內容追加到 authorized_keys2 中)

# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys2

3.SSH證書登陸驗證

(因為沒有設置私鑰密碼, 所以不需要密碼, 登錄成功)

# ssh root@B的iP

三、其他應用場景:

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

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

1:在SecureCRT創建私鑰和公鑰:

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

2.把私鑰和公鑰轉換為OpenSSH格式:

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

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

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

備註:

ssh對證書的文件和目錄許可權比較敏感,要麼根據出錯提示設置好文件和目錄許可權,要麼是把StrictModes選項設置為no。

hadoop部署的無密碼ssh登錄

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

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

2.把公鑰上傳到每個slave上指定的目錄,這樣就完成了ssh的無密碼跳轉了。

四、總結:

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