SSH
在正式說 id_rsa.pub,之前有必要先說說 SSH。
SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。
利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統上的一個程序,后來又迅速擴展到其他操作平台。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平台。
一般我們都會使用到兩種方式去登陸 SSH,密碼登陸和證書登陸。初學者都喜歡用密碼登錄,甚至是 root 賬戶登錄,密碼是 123456,這樣很容易遭受惡意攻擊,所以在實際的工作中和大多數的互聯網公司,都是會使用證書去登陸的。
證書登錄的步驟
(1)客戶端生成證書:私鑰和公鑰,然后私鑰放在客戶端,妥當保存,一般為了安全,訪問有黑客拷貝客戶端的私鑰,客戶端在生成私鑰時,會設置一個密碼,以后每次登錄 ssh 服務器時,客戶端都要輸入密碼解開私鑰(如果工作中,你使用了一個沒有密碼的私鑰,有一天服務器被黑了,你是跳到黃河都洗不清)。
(2)服務器添加信用公鑰:把客戶端生成的公鑰,上傳到 ssh 服務器,添加到指定的文件中,這樣,就完成 ssh 證書登錄的配置了。
假設客戶端想通過私鑰要登錄其他 ssh 服務器,同理,可以把公鑰上傳到其他 ssh 服務器。
真實的工作中:員工生成好私鑰和公鑰(千萬要記得設置私鑰密碼),然后把公鑰發給運維人員,運維人員會登記你的公鑰,為你開通一台或者多台服務器的權限,然后員工就可以通過一個私鑰,登錄他有權限的服務器做系統維護等工作,所以,員工是有責任保護他的私鑰的,如果被別人惡意拷貝,你又沒有設置私鑰密碼,那么,服務器就全完了,員工也可以放長假了。
客戶端建立私鑰和公鑰
如果是 Linux,則在客戶端終端運行以下命令,如果是 Windows,則可以用 Git Bash(默認安裝了 SSH) 終端運行以下命令:
ssh-keygen -t rsa
rsa 是一種密碼算法,還有一種是 dsa,證書登錄常用的是 rsa。
假設用戶是 blue,執行 ssh-keygen 時,才會在 .ssh/ 這個目錄里面產生所需要的兩把 Keys ,分別是私鑰 (id_rsa) 與公鑰 (id_rsa.pub)。
注:Linux 是在 home/.ssh/ 目錄下,而 Windows 是在 C:\Users\Feng\.ssh 目錄下。
擴展:authorized_keys
就是為了讓兩個 Linux 機器之間使用 ssh 不需要用戶名和密碼。采用了數字簽名 RSA 或者 DSA 來完成這個操作。
模型分析
假設 A (192.168.20.59)為客戶機器,B(192.168.20.60)為目標機;
要達到的目的:
- A 機器 ssh 登錄 B 機器無需輸入密碼;
- 加密方式選 rsa|dsa 均可以,默認 dsa。
單向登陸的操作過程(能滿足上邊的目的):
- 登錄 A 機器
ssh-keygen -t [rsa|dsa]
,將會生成密鑰文件和私鑰文件 id_rsa、id_rsa.pub 或 id_dsa、id_dsa.pub- 將 .pub 文件復制到B機器的 .ssh 目錄, 並
cat id_dsa.pub >> ~/.ssh/authorized_keys
- 大功告成,從 A 機器登錄 B 機器的目標賬戶,不再需要密碼了;(直接運行
#ssh 192.168.20.60
)
雙向登陸的操作過程:
- ssh-keygen 做密碼驗證可以使在向對方機器上 ssh,scp 不用使用密碼。
- 兩個節點都執行操作:
#ssh-keygen -t rsa
,然后全部回車,采用默認值。 - 這樣生成了一對密鑰,存放在用戶目錄的 ~/.ssh 下。
將公鑰考到對方機器的用戶目錄下,並將其復制到~/.ssh/authorized_keys
中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys
)。
參考:
每日掃盲(三):id_rsa、id_rsa.pub 、authorized_keys