我有一个使用 Gitlab 和 OpenVPN 设置的 Ubuntu 12.04 服务器作为我们的 git 和 vpn 服务器。
目前我已经在防火墙中打开了端口 1194 以打开 OpenVPN 并让用户通过 rsa 证书和 google auth 密钥进行身份验证。
我还没有为 SSH 流量打开防火墙,因为我不希望 SSH 完全暴露给 WAN。但是,我们需要能够在不连接到 vpn 的情况下进行推拉。
如何只为有限的 git 用户打开对 WAN 的 ssh 访问,同时允许管理员从 LAN 访问服务器?
我怀疑我应该在 sshd_config 文件中寻找使用匹配组的方向。正如在这个问题中看到的:“我如何设置 OpenSSH 每用户身份验证方法? ”,有人有这方面的经验吗?
编辑:
我最初接受了使用 access.conf 来限制登录访问的答案。但是后来的答案表明,可以通过 match 指令或使用 username@hostaddress 语法在 sshd.conf 中实现相同的目的。
起初我觉得把它放在 sshd 中更直观,而且对于其他管理员来说可能更容易维护和理解。与 sshd.conf 相比,使用 access.conf 有什么强大的优势吗?
如果我要对这里提到的选项的直观程度进行范围划分,我会说: 1. sshd.conf 2. access.conf 3. IpTables
你同意?
您正在寻找pam_access
,有了它,您可以配置 sshd 以接受来自本地网络的所有用户和来自任何地方的 git 用户的身份验证。
就像是:
+ : ALL : 10. crond :0 tty1 tty2 tty3 tty4 tty5 tty6
+ : git : ALL
- : ALL : ALL
Run Code Online (Sandbox Code Playgroud)
在您的 access.conf 中应该可以解决问题
您可以使用sshd_config中的AllowGroups、AllowUsers、DenyGroups和DenyUsers指令来控制允许用户登录的位置。它们按照DenyUsers、AllowUsers、DenyGroups、AllowGroups的顺序进行处理。AllowUsers可以包含主机以及用户名;我认为其他人只允许名字。
比方说你的
在 sshd_config 中你会说
AllowUsers alice@192.168.1.0/24 bob@192.168.1.0/24 git
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用Match指令来完成此操作。match 指令允许您根据条件(例如用户连接的地址)更改 sshd 的行为。
在sshd_config的全局部分中,您将拥有
AllowUsers git
Run Code Online (Sandbox Code Playgroud)
在文件末尾,您可以使用以下命令覆盖 LAN 的此设置
Match Address 192.168.1.0/24
AllowUsers alice bob git
Run Code Online (Sandbox Code Playgroud)