Linux-ssh證書登陸(實例詳解)

前言

本文基於實際Linux管理工做,實例講解工做中使用ssh證書登陸的實際流程,講解ssh證書登陸的配置原理,基於配置原理,解決實際工做中,windows下使用SecureCRT證書登陸的各類問題,以及實現hadoop集羣部署要求的無密碼跳轉問題。html

ssh有密碼登陸和證書登陸,初學者都喜歡用密碼登陸,甚至是root帳戶登陸,密碼是123456。可是在實際工做中,尤爲是互聯網公司,基本都 是證書登陸的。內網的機器有多是經過密碼登陸的,但在外網的機器,若是是密碼登陸,很容易受到攻擊,真正的生產環境中,ssh登陸都是證書登陸。linux

證書登陸的步驟

1.客戶端生成證書:私鑰和公鑰,而後私鑰放在客戶端,穩當保存,通常爲了安全,訪問有黑客拷貝客戶端的私鑰,客戶端在生成私鑰時,會設置一個密 碼,之後每次登陸ssh服務器時,客戶端都要輸入密碼解開私鑰(若是工做中,你使用了一個沒有密碼的私鑰,有一天服務器被黑了,你是跳到黃河都洗不清)。算法

2.服務器添加信用公鑰:把客戶端生成的公鑰,上傳到ssh服務器,添加到指定的文件中,這樣,就完成ssh證書登陸的配置了。vim

假設客戶端想經過私鑰要登陸其餘ssh服務器,同理,能夠把公鑰上傳到其餘ssh服務器。windows

真實的工做中:員工生成好私鑰和公鑰(千萬要記得設置私鑰密碼),而後把公鑰發給運維人員,運維人員會登記你的公鑰,爲你開通一臺或者多臺服務器的 權限,而後員工就能夠經過一個私鑰,登陸他有權限的服務器作系統維護等工做,因此,員工是有責任保護他的私鑰的,若是被別人惡意拷貝,你又沒有設置私鑰密 碼,那麼,服務器就全完了,員工也能夠放長假了。安全

客戶端創建私鑰和公鑰

在客戶端終端運行命令服務器

ssh-keygen -t rsa

rsa是一種密碼算法,還有一種是dsa,證書登陸經常使用的是rsa。運維

假設用戶是blue,執行 ssh-keygen 時,纔會在個人home目錄底下的 .ssh/ 這個目錄裏面產生所須要的兩把 Keys ,分別是私鑰 (id_rsa) 與公鑰 (id_rsa.pub)。ssh

另外就是私鑰的密碼了,若是不是測試,不是要求無密碼ssh,那麼對於passphrase,不能輸入空(直接回車),要穩當想一個有特殊字符的密碼。ide

ssh服務端配置

ssh服務器配置以下:

vim /etc/ssh/sshd_config
#禁用root帳戶登陸,非必要,但爲了安全性,請配置 PermitRootLogin no # 是否讓 sshd 去檢查用戶家目錄或相關檔案的權限數據, # 這是爲了擔憂使用者將某些重要檔案的權限設錯,可能會致使一些問題所致。 # 例如使用者的 ~.ssh/ 權限設錯時,某些特殊狀況下會不準用戶登入 StrictModes no # 是否容許用戶自行使用成對的密鑰系統進行登入行爲,僅針對 version 2。 # 至於自制的公鑰數據就放置於用戶家目錄下的 .ssh/authorized_keys 內 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys #有了證書登陸了,就禁用密碼登陸吧,安全要緊 PasswordAuthentication no

配置好ssh服務器的配置了,那麼咱們就要把客戶端的公鑰上傳到服務器端,而後把客戶端的公鑰添加到authorized_keys

在客戶端執行命令

scp ~/.ssh/id_rsa.pub blue@<ssh_server_ip>:~

在服務端執行命令

cat  id_rsa.pub >> ~/.ssh/authorized_keys

若是有修改配置/etc/ssh/sshd_config,須要重啓ssh服務器

/etc/init.d/ssh restart

 

客戶端經過私鑰登陸ssh服務器

ssh命令

ssh -i /blue/.ssh/id_rsa blue@<ssh_server_ip>

scp命令

scp -i /blue/.ssh/id_rsa filename blue@<ssh_server_ip>:/blue

每次敲命令,都要指定私鑰,是一個很繁瑣的事情,因此咱們能夠把私鑰的路徑加入ssh客戶端的默認配置裏

修改/etc/ssh/ssh_config

#其實默認id_rsa就已經加入私鑰的路徑了,這裏只是示例而已 IdentityFile ~/.ssh/id_rsa #若是有其餘的私鑰,還要再加入其餘私鑰的路徑 IdentityFile ~/.ssh/blue_rsa

其餘應用場景

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客戶端參考上文。

  備註:ssh對證書的文件和目錄權限比較敏感,要麼根據出錯提示設置好文件和目錄權限,要麼是把StrictModes選項設置爲no

hadoop部署的無密碼ssh登陸

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

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

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

總結

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

以上轉自:http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646346.html

 

如下爲本人實際操做

測試環境客戶端爲Windows(Git Bash或cygwin), 服務端爲Linux(虛擬機)

"公私鑰"認證方式簡單的解釋:首先在客戶端上建立一對公私鑰 (公鑰文件:~/.ssh/id_rsa.pub; 私鑰文件:~/.ssh/id_rsa)而後把公鑰放到服務器上(~/.ssh/authorized_keys), 本身保留好私鑰, 在使用ssh登陸時, ssh程序會發送私鑰去和服務器上的公鑰作匹配, 若是匹配成功就能夠登陸了

1.在本地生成一對密鑰(即公鑰和私鑰)

ssh-keygen -t rsa

執行完以下命令會在用戶目錄(本人的是C:/用戶/John_ABC/)的.ssh目錄下看到兩個文件id_rsa(私鑰, 放在這兒便可), id_rsa.pub(公鑰, 放在要登陸的服務器的使用的用戶的家目錄的.ssh目錄下)

2.將公鑰複製到要使用Public Key登陸的服務端(此處就先複製到用戶suiyongjie的家目錄下), 此時(若是是首次訪問服務端)還會在客戶端用戶家目錄的.ssh文件夾下生成known_hosts文件, 來保存各個認證過的主機信息(即再次鏈接的時候再也不提示The authenticity of host 'xxx.xxx.xxx.xxx' can not be established)
scp ~/.ssh/id_rsa.pub suiyongjie@192.168.126.128:~/

3.此時會提示輸入這個用戶的登陸密碼

4.輸入密碼後, 拷貝成功

5.使用ssh登陸到服務端, 此時在suiyongjie的家目錄能夠看到id_rsa.pub文件

6.若是在suiyongjie的家目錄沒有.ssh文件夾則新建

mkdir ~/.ssh
chmod 700 ~/.ssh

7.將剛纔上傳到服務端的id_rsa.pub文件中的內容添加到suiyongjie家目錄/.ssh/authorized_keys中, 刪除剛纔上傳到服務端的的id_rsa.pub

cat  ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub

8.修改~/.ssh文件夾內文件的訪問權限 權限的設置很是重要, 由於不安全的設置, 會讓你不能使用RSA功能。

chmod 600 ~/.ssh/*

9.使用SSH私鑰登陸服務器

ssh -i ~/.ssh/id_rsa suiyongjie@192.168.126.128

若是以上步驟不能實現不輸密碼登錄的話,須要檢查sshd服務的Pubkey認證功能是否默認打開修改/etc/ssh/sshd_config, 改如下條目PubkeyAuthentication yes

相關文章
相關標籤/搜索