![如何禁用某些用户的 SSH 密码登录?](https://linux22.com/image/554282/%E5%A6%82%E4%BD%95%E7%A6%81%E7%94%A8%E6%9F%90%E4%BA%9B%E7%94%A8%E6%88%B7%E7%9A%84%20SSH%20%E5%AF%86%E7%A0%81%E7%99%BB%E5%BD%95%EF%BC%9F.png)
在 Linux (Debian Squeeze) 上,我想禁用某些用户(选定组或除 root 之外的所有用户)使用密码进行 SSH 登录。但我不想禁用他们使用证书登录。
编辑:非常感谢您的详细回答!出于某种原因,这在我的服务器上不起作用:
Match User !root
PasswordAuthentication no
...但可以很容易地被取代
PasswordAuthentication no
Match User root
PasswordAuthentication yes
答案1
尝试:Match
sshd_config
Match User user1,user2,user3,user4
PasswordAuthentication no
或者按组:
Match Group users
PasswordAuthentication no
或者,如评论中提到的那样,通过否定:
Match User !root
PasswordAuthentication no
注意匹配有效“直到另一个匹配行或文件末尾。”(缩进并不明显)
答案2
Match
运行sshd_config
良好。如果您使用的是 openssh 6.5p1 或更高版本,则应使用Match all
来结束匹配块。示例:
PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all
答案3
由于某些安全原因,您可能需要阻止某些用户通过 SSH 访问 Linux 机器。
编辑 sshd_config 文件,位置有时会根据 Linux 发行版而有所不同,但通常位于 /etc/ssh/。
以 root 身份登录后打开该文件:
# vi /etc/ssh/sshd_config
在配置文件末尾插入一行:-
DenyUsers username1 username2 username3 username4
保存并重新启动 SSH 服务。基本上不允许用户名 1、用户名 2、用户名 3 和用户名 4 SSH 登录。
运行以下命令重新启动:-
# systemctl restart sshd
要求已完成。请从该用户那里获取 ssh,您将收到错误“访问被拒绝”
答案4
配置语句的顺序很重要...我对文件的解决方案
/etc/ssh/sshd_config
:
Match User <username>
PasswordAuthentication yes
Match User all
PasswordAuthentication no