/etc/ssh/ 和 ~/.ssh 有什么区别?

/etc/ssh/ 和 ~/.ssh 有什么区别?

我对 OpenSSH 很感兴趣,并且我知道该/etc/ssh目录是用于 ssh 守护进程的,而该~/.ssh目录是用于特定用户的。

这两个目录都包含私钥和公钥:

目录内容

但这些键有什么区别呢?我很困惑,因为我作为用户使用的键位于我的主目录中,并且在 中找到的键的作用是什么/etc/ssh

答案1

/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_configsshd_config有关详细信息(man ssh_config以及man sshd_config在您的系统上)的联机帮助页。用于已知主机的格式描述于联机sshd帮助页

答案2

/etc/ssh 保存主机(计算机/操作系统)的私钥和公钥对

~/.ssh 保存其所有者用户的密钥对

研究一下对称密钥和 PKI 的工作原理。您会发现,在大多数情况下,发送者和接收者都需要自己的私钥/公钥对。

相关内容