如何禁用某些用户的 SSH 密码登录?

如何禁用某些用户的 SSH 密码登录?

在 Linux (Debian Squeeze) 上,我想禁用某些用户(选定组或除 root 之外的所有用户)使用密码进行 SSH 登录。但我不想禁用他们使用证书登录。

编辑:非常感谢您的详细回答!出于某种原因,这在我的服务器上不起作用:

Match User !root
PasswordAuthentication no

...但可以很容易地被取代

PasswordAuthentication no
Match User root
PasswordAuthentication yes

答案1

尝试:Matchsshd_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 

相关内容