sshd_config AllowUsers

时间:2013-02-07 21:38:18

标签: sshd

我正在尝试遵循以下逻辑的AllowUsers指令的非常具体的配置:

  • 允许user1从host1
  • ssh
  • 将user1拒绝来自任何其他主机
  • 允许来自任何主机的所有其他用户

我尝试了以下内容:

AllowUsers user1@host1 user1@!* *@*

不幸的是,当 @ 存在时,无论订单是什么,它都会否定之前的参数。

我有两个问题;是否存在执行AllowUsers指令中的参数的顺序,甚至可能是上面的逻辑?

4 个答案:

答案 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