我正在尝试遵循以下逻辑的AllowUsers指令的非常具体的配置:
我尝试了以下内容:
AllowUsers user1@host1 user1@!* *@*
不幸的是,当 @ 存在时,无论订单是什么,它都会否定之前的参数。
我有两个问题;是否存在执行AllowUsers指令中的参数的顺序,甚至可能是上面的逻辑?
答案 0 :(得分:4)
sshd_config man表示处理顺序为:
允许/拒绝指令按以下顺序处理:DenyUsers,AllowUsers,DenyGroups,最后是AllowGroups。
因此,如果“user1”也有自己的组“user1”,则可以使用此配置:
AllowUsers *@host1
DenyGroups user1
AllowGroups *
另一种选择是使用否定:
DenyUsers user1@!host1
AllowUsers *@*
答案 1 :(得分:3)
仅使用一个sshd实例就无法实现上述逻辑。但是,如果运行第二个sshd实例(配置为侦听其他端口),则可以执行此操作。
使用以下命令配置第一个实例:
DenyUsers user1
使用以下命令配置第二个实例:
AllowUsers user1@host1
告诉user1连接到第二个实例(不同的端口)。告诉所有其他用户连接到第一个实例(默认端口)。
答案 2 :(得分:0)
注意:您也可以使用SSH PAM CONFIG(推荐给大量用户)或使用TCP Wrappers来允许或拒绝ssh访问,但是您需要获取libwrap.a库以使其与SSH一起使用。< / p>
如果您想通过SSHD CONFIG限制访问,可以使用以下四个条目:
的AllowUsers AllowGroups DenyUsers DenyGroups
模式匹配按以下顺序进行:DenyUsers,AllowUsers,DenyGroups,AllowGroups。这意味着,例如,如果您向两个条目(AllowUsers和DenyUsers)添加用户,这将导致用户被拒绝,无论规则在配置脚本中出现的顺序如何。
要完成您提及的3个限制,您可以尝试创建一个 sshgroup 组,并将除 user1 之外的每个用户帐户配置为包含在该组中。最后,您可以创建一个脚本,将 sshgroup 中的用户添加到sshd_config文件中的规则中,该规则始终包含:
AllowUsers user1 @ host1
导致:
AllowUsers user1 @ host1 user2 user3 ...
要使sshd配置文件保持最新,您可以在每次创建/删除用户时调用该脚本。不要忘记在每次更改配置文件后重新启动ssh守护程序。
Here你可以找到一个同时试图生成用户列表的脚本“pop_user_allow_ssh”。
你没有提到你的操作系统,但这就是我在AIX上的做法。我希望这个想法有所帮助。
答案 3 :(得分:0)
sudo chown -R YOUR_USER. avd