本文基於實際linux管理工作,例項講解工作中使用ssh證書登入的實際流程,講解ssh證書登入的配置原理,基於配置原理,解決實際工作中,windows下使用securecrt證書登入的各種問題,以及實現hadoop集群部署要求的無密碼跳轉問題。
ssh有密碼登入和證書登入,初學者都喜歡用密碼登入,甚至是root賬戶登入,密碼是123456。但是在實際工作中,尤其是網際網路公司,基本都 是證書登入的。內網的機器有可能是通過密碼登入的,但在外網的機器,如果是密碼登入,很容易受到攻擊,真正的生產環境中,ssh登入都是證書登入。
1.客戶端生成證書:私鑰和公鑰,然後私鑰放在客戶端,妥當儲存,一般為了安全,訪問有黑客拷貝客戶端的私鑰,客戶端在生成私鑰時,會設定乙個密 碼,以後每次登入ssh伺服器時,客戶端都要輸入密碼解開私鑰(如果工作中,你使用了乙個沒有密碼的私鑰,有一天伺服器被黑了,你是跳到黃河都洗不清)。
2.伺服器新增信用公鑰:把客戶端生成的公鑰,上傳到ssh伺服器,新增到指定的檔案中,這樣,就完成ssh證書登入的配置了。
假設客戶端想通過私鑰要登入其他ssh伺服器,同理,可以把公鑰上傳到其他ssh伺服器。
真實的工作中:員工生成好私鑰和公鑰(千萬要記得設定私鑰密碼),然後把公鑰發給運維人員,運維人員會登記你的公鑰,為你開通一台或者多台伺服器的 許可權,然後員工就可以通過乙個私鑰,登入他有許可權的伺服器做系統維護等工作,所以,員工是有責任保護他的私鑰的,如果被別人惡意拷貝,你又沒有設定私鑰密 碼,那麼,伺服器就全完了,員工也可以放長假了。
在客戶端終端執行命令
ssh-keygen -t rsarsa是一種密碼演算法,還有一種是dsa,證書登入常用的是rsa。
假設使用者是blue,執行 ssh-keygen 時,才會在我的home目錄底下的 .ssh/ 這個目錄裡面產生所需要的兩把 keys ,分別是私鑰 (id_rsa) 與公鑰 (id_rsa.pub)。
另外就是私鑰的密碼了,如果不是測試,不是要求無密碼ssh,那麼對於passphrase,不能輸入空(直接回車),要妥當想乙個有特殊字元的密碼。
ssh伺服器配置如下:
vim /etc/ssh/sshd_config配置好ssh伺服器的配置了,那麼我們就要把客戶端的公鑰上傳到伺服器端,然後把客戶端的公鑰新增到authorized_keys#禁用root賬戶登入,非必要,但為了安全性,請配置
permitrootlogin no
#是否讓 sshd 去檢查使用者家目錄或相關檔案的許可權資料,
#這是為了擔心使用者將某些重要檔案的許可權設錯,可能會導致一些問題所致。
#例如使用者的 ~.ssh/ 許可權設錯時,某些特殊情況下會不許使用者登入
strictmodes no
#是否允許使用者自行使用成對的金鑰系統進行登入行為,僅針對 version 2。
#至於自製的公鑰資料就放置於使用者家目錄下的 .ssh/authorized_keys 內
rsaauthentication yes
pubkeyauthentication yes
authorizedkeysfile %h/.ssh/authorized_keys
#有了證書登入了,就禁用密碼登入吧,安全要緊
passwordauthentication no
在客戶端執行命令
scp ~/.ssh/id_rsa.pub blue@:~在服務端執行命令
cat id_rsa.pub >> ~/.ssh/authorized_keys如果有修改配置/etc/ssh/sshd_config,需要重啟ssh伺服器
/etc/init.d/ssh restartssh命令
ssh -i /blue/.ssh/id_rsa blue@scp命令
scp -i /blue/.ssh/id_rsa filename blue@:/blue每次敲命令,都要指定私鑰,是乙個很繁瑣的事情,所以我們可以把私鑰的路徑加入ssh客戶端的預設配置裡
修改/etc/ssh/ssh_config
#其實預設id_rsa就已經加入私鑰的路徑了,這裡只是示例而已
identityfile ~/.ssh/id_rsa
#如果有其他的私鑰,還要再加入其他私鑰的路徑
identityfile ~/.ssh/blue_rsa
ssh 免密碼登入
ssh 無密碼登入要使用公鑰與私鑰。linux下可以用用ssh keygen生成公鑰 私鑰對,下面我以centos為例。有機器a 192.168.1.155 b 192.168.1.181 現想a通過ssh免密碼登入到b。1.在a機下生成公鑰 私鑰對。chenlb a ssh keygen t rs...
ssh 免密碼登入
ssh 免密碼登入 ssh 無密碼登入要使用公鑰與私鑰。linux下可以用用ssh keygen生成公鑰 私鑰對,下面我以centos為例。有機器a 192.168.1.155 b 192.168.1.181 現想a通過ssh免密碼登入到b。1.在a機下生成公鑰 私鑰對。chenlb a ssh k...
ssh免密碼登入
實現原理 主機a 產生公鑰和金鑰,將主機a的公鑰傳送到主機b 主機b 接收主機a傳送的公鑰 主機a ssh請求登入到主機b 主機b 傳送給主機a一串字元 主機a 收到主機b傳送的字元,使用金鑰進行加密,並傳送回到主機b 主機b 接收到主機a使用金鑰加密後的字元,使用主機a的公鑰執行一定演算法進行對比...