Ssh
SSH 認證序列和密鑰文件:解釋
作為使用 SSH 和帶密鑰對的 rsync 解決各種問題的背景,我想對 SSH 身份驗證期間發生的事件序列以及多個客戶端和主機文件中的每一個如何發揮作用有一個簡單的概述。
Google發現了許多細節層面的解釋,要麼是范圍狹窄,要麼是其廣泛的範圍內充滿了這些細節。更不用說許多不正確或混亂的解釋和論壇文章。
我最終創建了幾個圖表來澄清兩件事:
- 使用密鑰準備 SSH 通信涉及哪些文件和操作
- 這些文件在建立連接的過程中做了什麼。
我將在下面的答案中發布這些。
以下答案解釋了使用公鑰-私鑰對(“公鑰基礎設施”或“PKI”)準備 ssh 身份驗證所需的文件,以及在實際 ssh 會話期間如何使用這些文件。這裡的一些細節使用適用於 linux 的名稱和目錄,但這些原則適用於所有平台,這些平台使用與這些並行的程序和文件。感興趣的主要特徵是:
- 使用者機器
**使用者密鑰對:**公共和私有,客戶端使用者必須使用 ssh-keygen 創建,創建名稱如下的文件:
- ~/.ssh/ id_rsa (私有)和
- ~/.ssh/ id_rsa.pub (公共)
- 在準備中,必須給主機的authorized_keys文件
~/.ssh/ known_hosts
- 如果使用者在第一次登錄時接受它,它會從伺服器接收公鑰。
- 主機(伺服器)機器
**主機密鑰對:**公共和私有
- 在某些時候自動創建,例如在伺服器上安裝 openssh。典型名稱:
- /etc/ssh/ ssh_host_rsa_key (私有)
- /etc/ssh/ssh_host_rsa_key.pub (公共**)**
- 當客戶端使用者第一次嘗試連接 ssh 時,host 會向客戶端使用者提供公鑰。客戶端將主機的密鑰儲存在known_hosts
~/.ssh/ authorized_keys
- 在準備過程中,必須為每個將登錄的使用者提供公鑰。
- 實際 SSH(或 rsync)會話中的事件序列,顯示文件是如何參與的。
(請注意,有兩種不同的常見簽名算法,RSA 和 DSA,因此在本討論使用“rsa”的地方,可能會出現字元串“dsa”。)
我希望這些圖表會有所幫助。