AllowGroups和root @ IP

时间:2014-02-09 12:48:34

标签: ssh ssh-keys openssh sshd

我有几台服务器使用以下sshd配置。

# Authentication:
PermitRootLogin no
AllowGroups ssh
PubkeyAuthentication yes
PasswordAuthentication no

这意味着组“ssh”中的每个用户都可以登录,但只能使用pubkey。不允许登录root。

但是root必须有一个例外:我的备份服务器必须以root身份登录。

我试过了:

AllowUsers root@$ip
AllowGroups ssh

但AllowUsers会覆盖AllowGroups语句。所以只有来自$ ip的root才能登录。

Match User root, Address $ip
    PermitRootLogin {yes|without-password}
    AllowUsers root

Match Address $ip
    PermitRootLogin {yes|without-password}
    AllowUsers *

两者都被完全忽略了。组“ssh”中的正常用户只能登录。

这是一个简单的场景,用户登录限制为pubkey,root登录限制为pubkey和某些ip。怎么解决?

1 个答案:

答案 0 :(得分:5)

您尚未发布整个sshd_config,因此重现这种情况有点困难,但这似乎有效:

# Main config prohibits all logins
PermitRootLogin no
AllowUsers root

# Permit root logins from a specific address
Match Address 192.168.1.20
  PermitRootLogin yes

# Allow logins to anyone in "ssh" group.
Match Group ssh
  AllowUsers *

另一种解决方案是:

  • sshd_config

    中加入以下内容:
    AllowGroups ssh
    PermitRootLogin without-password
    
  • root成为ssh群组的成员。

    usermod -a -G ssh root
    
  • 使用受限制的公共密钥添加到/root/.ssh/authorized_keys 源地址,如下所示:

    from=192.168.1.20 ssh-rsa ...
    

这样可以得到你想要的东西:

  • 只有ssh组的成员才能登录。
  • root只能从中的特定IP地址登录 authorized_keys档案。