是否可以(如果可以,如何)执行以下操作openssh-server
:
- 能够
root
使用密钥而非密码来验证用户身份 - 能够
non-root
使用密钥而非密码来验证用户身份 - 防止用户使用自己的密钥
non-root
登录root
- 要做到这一点
sshd
,只需使用一个TCP port
是的,我非常清楚PermitRootLogin yes
期权的风险。
答案1
这应该是“开箱即用的”,并且不需要做任何其他事情,只需将用户公钥放入服务器上相应用户的 .ssh/authorized_keys 文件中即可。(如果用户没有此文件,请创建它!)
唯一要注意的是,如果非 root 用户公钥被添加到服务器的 root/.ssh/authorized_keys,那么该非 root 用户将能够以 root 身份登录服务器 - 因此为了避免这种情况,不要将他们的密钥添加到根的 authorized_keys 文件中。
您已经遇到了 PermitRootLogin - 当然,需要在服务器上启用它。您可以(可选)限制谁可以从哪里登录(如果有的话),方法是添加一行,例如“AllowUsers[电子邮件保护] [电子邮件保护]user2”——它只允许来自特定 IP 地址的 root 和 user1,但 user2 可以从任何地方登录。您可以根据需要使用尽可能多的用户/ip 组合来扩展此功能。