Ssh
/etc/ssh/ 和 ~/.ssh 有什麼區別?
我對 OpenSSH 很感興趣,而且我知道該
/etc/ssh
目錄用於 ssh 守護程序,並且該~/.ssh
目錄用於特定使用者。兩個目錄都包含私鑰和公鑰:
但是這些鍵之間有什麼區別?我很困惑,因為我作為使用者使用的那些在我的主目錄中,在 中找到的鍵的作用是
/etc/ssh
什麼?
/etc/ssh
為系統提供配置:使用者的預設配置(/etc/ssh/ssh_config
)和守護程序的配置(/etc/ssh/sshd_config
)。守護程序使用其中的各種主機文件/etc/ssh
:它們包含用於標識伺服器的主機密鑰 - 就像使用者通過密鑰對(儲存在他們的主目錄中)標識的方式一樣,伺服器也通過密鑰標識對。使用多個密鑰對是因為伺服器通常提供多種類型的密鑰:在您的情況下是 RSA、ECDSA 和 Ed25519。(使用者也可以有多個密鑰。)各種密鑰文件的使用如下:
- 您的私鑰(如果有)用於向您正在連接的任何伺服器辨識您的身份(它必須與儲存在您嘗試連接的帳戶的伺服器授權密鑰中的公鑰相匹配);
- 客戶端使用伺服器的私鑰來辨識伺服器;此類身份儲存在 中
~/.ssh/known_hosts
,如果伺服器的密鑰發生更改,SSH 會抱怨並禁用某些功能以減輕中間人攻擊;- 您的公鑰文件儲存了您需要復製到遠端伺服器的字元串(在 中
~/.ssh/authorized_keys
);它不直接使用;- 伺服器的公鑰文件儲存字元串,您可以將其複製到已知主機列表中以預填充它;它也不直接使用。
最後一部分並不經常使用。預設的 SSH 模型被稱為“TOFU”(首次使用時信任):連接在第一次使用時預設是信任的,SSH 只關心意外更改。在某些情況下,雖然能夠信任第一個連接也很有用:伺服器的操作員可以傳送伺服器的公鑰,使用者可以在第一次連接之前將這些添加到他們已知的主機。
有關詳細資訊(以及在您的系統上) ,請參見
ssh_config
和手冊頁。手冊頁中描述了用於已知主機的格式。sshd_config
man ssh_config``man sshd_config
sshd