所以我的本地网络上有一台运行 OpenSSH 服务器的服务器。服务器被配置为允许来自外部网络的 SSH,这是预期的。但是,我想创建一个特定用户(localUser),该用户不得从我的 LAN 外部登录。
目前我有一个名为 sshusers 的组,这是唯一允许通过 SSH 登录的组。
根据手册页,应该可以使用“允许/拒绝”用户,但我不知道如何做到这一点。这是我尝试过的:
第一次尝试:
AllowGroups sshusers
AllowUsers [email protected].* # 2 is not a typo
# localUser not in group sshusers. Intention: AllowUsers should override
# previous configuration, allowing access for localUser, even if he is
# not member of sshusers
第二次尝试:
AllowGroups sshusers
DenyUsers localUser@!192.168.2.*
# localUser is member of sshusers. Intention: Access is granted, but with
# the negotiation of the match-expression for the LAN, access should be
# denied for external login.
# Also tried "[email protected].*"
我应该提到,拒绝用户访问 LAN 但授予外部访问权限是可行的:
# localUser member of sshusers
AllowGroups sshusers
DenyUsers [email protected].*
但是,我想反转这个配置。
感谢任何帮助,但我不喜欢为此使用 PAM 或 iptables。
答案1
您可以尝试以下操作:
AllowGroups sshusers
DenyUsers localuser@!192.168.2.*,
请注意星号后面的逗号。因此,用于否定主机名匹配的语法!
应该是:
DenyUsers localuser@!192.168.2.*,!10.8.0.*,
这意味着如果主机与列表中的主机不同,本地用户应该无法连接。
正如评论中所述,这不适用于等于或更高版本OpenSSH_7.4p1
。所以我尝试了以下(使用测试openssh-7.5p1
),它完美地工作:
DenyUsers localuser@*,!10.8.0.*
这样,除 10.8.0.* 之外的任何地方都拒绝 localuser