我对 上的某些 ssh 服务器配置有一些疑问/etc/ssh/sshd_config
。我想要下一个行为:
- 公钥身份验证是作为 root 进行身份验证的唯一方法(无需密码身份验证或其他身份验证)
- 普通用户可以同时使用(密码和公钥认证)
如果我设置PasswordAuthentication no
我的第一点是满意的,但不是第二点。有没有办法只设置PasswordAuthentication no
root权限?
答案1
您可以使用该PermitRootLogin
指令来执行此操作。从sshd_config
联机帮助页:
指定 root 是否可以使用 ssh(1) 登录。参数必须是“yes”、“without-password”、“forced-commands-only”或“no”。默认为“是”。
如果此选项设置为“without-password”,则禁用 root 的密码身份验证。
以下将实现您想要的:
PasswordAuthentication yes
PermitRootLogin prohibit-password
PermitRootLogin 现在接受“prohibit-password”参数作为“without-password”的不太明确的同义词。
然后重新加载你的 ssh 服务器:
systemctl reload sshd
像往常一样,不要关闭活动终端,直到您从另一个终端验证一切正常并且您没有因错误而被锁定。
答案2
您可以使用Match
块来配置每个用户或组身份验证或每个连接源的 IP 地址或主机名的一些选项。
PasswordAuthentication yes
PermitRootLogin yes
Match User root
PasswordAuthentication no
然后重新加载你的 ssh 服务器:
systemctl reload sshd
像往常一样,不要关闭活动终端,直到您从另一个终端验证一切正常并且您没有因错误而被锁定。
答案3
我有一种更严格的方法来授予我的服务器上的 root 权限,这对于像我这样偏执的人来说可能会很有趣。请小心您的操作和顺序,否则您最终可能会得到一个无法获得 root 访问权限的系统。
- 创建一个特定的组
sugroup
,其成员将被允许成为 root 并且仅允许通过输入以下行对该组进行密钥身份验证在最后sshd_confid:
Match Group sugroup
PasswordAuthentication no
- 将命令
auth required pam_wheel.so group=sugroup
放入/etc/pam.d/su
.它可能已经存在,您只需取消注释即可。这会拒绝所有非 sugroup 成员的用户的 root 访问权限 - 选择一个强root密码:)
- 检查您的新身份验证方法是否有效,并且仅在以下情况下有效:
PermitRootLogin no
使用in拒绝通过 ssh 直接 root 登录/etc/ssh/sshd_config
。
使用此配置需要使用密钥身份验证和密码才能成为 root。我这样配置我的服务器,因为我更喜欢不通过 ssh 直接进行 root 访问,无论身份验证方法如何。