不在AllowUsers 中的用户可以ssh

不在AllowUsers 中的用户可以ssh

我在通常的底部有以下内容/etc/ssh/sshd_config

Match Group sftpg                                                                                                                                                                                           
     ChrootDirectory /data/%u                                                                                                                                                                               
     ForceCommand internal-sftp                                                                                                                                                                             

# Personal settings                                                                                                                                                                                         
AllowUsers user1                                                                                                                                                                                           
AllowGroups user1                                                                                                                                                                                          
PermitRootLogin no 

该文件中没有其他AllowUsers条目,并且至少在该目录下没有其他 sshd 配置/etc/ssh

尽管如此,user2仍然可以通过ssh登录。我已完全重新启动电脑。

难道不应该拒绝每个不在 中的用户的 ssh 吗AllowUsers?我可以尝试什么?

id user2返回:

uid=1002(user2) gid=1002(user2) groups=1002(user2),115(nopasswdlogin),999(docker)

答案1

配置文件的文档(请参阅 参考资料man sshd_config)讨论了Match这样的块(我的重点),

Match引入条件块。如果满足该行中的所有条件Match,则以下行中的关键字将覆盖配置文件全局部分中设置的关键字,直到另一个匹配行或文件末尾。

它还说,

在关键字后面的行中只能使用关键字的子集Match。可用的关键字有 [...] AllowGroups、 [...] AllowUsers、 [...] PermitRootLogin、 [...]

因此,发生的情况是,您的AllowGroupsAllowUsers和关键字仅在该阻止生效PermitRootLogin时才被应用。Match Group sftpg就像你这样写的:

Match Group sftpg                                                                                                                                                                                           
    ChrootDirectory /data/%u                                                                                                                                                                               
    ForceCommand internal-sftp                                                                                                                                                                             
    AllowUsers user1                                                                                                                                                                                           
    AllowGroups user1                                                                                                                                                                                          
    PermitRootLogin no

解决方案是将全局设置移至第一个Match块上方,以便它们适用于所有地方。

答案2

将 #Personal 部分移至“匹配组/匹配用户”部分上方并反弹 sshd。我在“匹配用户”下的“AllowUsers”中遇到了同样的问题。

相关内容