![关于SSH密钥认证的一些问题](https://linux22.com/image/1399508/%E5%85%B3%E4%BA%8ESSH%E5%AF%86%E9%92%A5%E8%AE%A4%E8%AF%81%E7%9A%84%E4%B8%80%E4%BA%9B%E9%97%AE%E9%A2%98.png)
正如标题所说,我对 Linux 机器上的 SSH 密钥认证方法有一些疑问。
首先,我在我的电脑上生成了密钥,并在authorized_keys文件中添加了公钥,一切运行正常,但我仍然不太清楚这是如何工作的。
- 我只能通过 SSH 使用我的密钥登录 root 用户,我想登录其他用户。这些用户缺少某些权限,还是我的密钥已附加到 root 用户?
- 如果多个人使用不同的密钥访问机器,他们是否可以访问所有用户,例如 root 用户?
- 就像我之前说的,我正在与不同的用户合作,有没有什么方法可以只向某个用户添加密钥?例如,我创建了用户“john”,告诉我的朋友 John 在他的计算机上创建密钥,然后将密钥添加到授权密钥中,但他只能在使用他的密钥时登录用户“john”。
我搜索了几个小时试图找到有关此问题的一些信息,但没有找到答案,如果之前已经回答过这个问题,我很抱歉。
提前致谢。
答案1
公钥认证通常针对每个用户。每个用户应该有一个不同的 /home/*/.ssh/authorized_keys 文件,该文件只向该用户授予访问权限。
没有该文件的用户只能使用自己的密码登录。
也就是说,一旦您以 root 身份登录,您就可以执行“su anotheruser”来代表该用户行事。当然,只有 root 可以执行此操作。
或者,如果您有 2 个具有相同用户的服务器,则可以设置系统范围的密钥信任。这可以通过文件 /etc/hosts.equiv 完成
另一个技巧是让服务器中的所有用户都使用相同版本的“authorized_keys”文件,这样您就可以以具有相同私钥的任何用户身份登录。
答案2
该authorized_keys
文件是每个用户的。当您将公钥添加到 root 用户的authorized_keys
文件时,具有相应私钥的远程帐户可以登录 root 帐户。您的要点按顺序排列:
- 您必须将您的公钥添加到您希望使用密钥登录的每个用户的“authorized_keys”文件中。
- 每个额外的远程人员的公钥将只具有登录您添加其公钥的帐户的权限。因此,如果您将 John 的密钥仅添加到用户“sam”的“authorized_keys”文件中,那么 John 将能够登录“sam”帐户,而不能登录其他帐户。
- 是的 - 正如我所说,仅将远程人员的密钥添加到您希望他们登录的帐户。