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

Kav*_*our 10 security ssh openssh cryptography key-authentication

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

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

目录目录

但是这些键之间有什么区别呢?我很困惑,因为我作为用户使用的那些在我的主目录中,在/etc/ssh?

Ste*_*itt 12

/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_configman sshd_configsshd


小智 5

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

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

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