使用 ubuntu 12.04,我想使用 sshd_config 将来自 root 的 ssh 会话限制到固定的 IP 子集。我希望普通用户能够从任何地方进行 ssh,但 root 只能从 IP 范围(我的本地子网)以及此范围之外的一个 IP(我的异地备份服务器)进行 ssh。
对于我的备份解决方案来说,需要通过 ssh 进行 root 访问,因此使用
PermitRootLogin 否
不是一个解决方案。同时,我不想让所有人和他们的妈妈都拥有 root 权限,从而不必要地危害我的系统。
我目前在 sshd_config 中有以下内容:
AllowUsers *@*
DenyUsers root@*
AllowUsers [email protected].*
AllowUsers [email protected]
其中本地子网和异地备份号码是正确的。
这不起作用。有什么提示可以让它工作吗?为什么?sshd_config 的文档并没有帮助我理解 AllowUsers 和 DenyUsers 如何交互。
答案1
考虑简单地使用 SSH 密钥以 root 身份登录 ( PermitRootLogin without-password
)。可以使用 authorized_keys 中的选项将每个密钥限制为特定的源地址from="1.2.3.4,8.9.0.0/24,::1"
。
手册页位于“AllowUsers”下方,做说:
允许/拒绝指令按以下顺序处理:DenyUsers、AllowUsers、DenyGroups,最后是 AllowGroups。
– 因此,如果 DenyUsers 条目匹配,则根本不会检查任何其他规则。
答案2
在 /etc/ssh/sshd_config 中,确保在配置的主要部分设置了以下内容
PermitRootLogin no
并将其附加到配置文件的末尾。现在 root 只能从本地地址登录。
Match Address 192.168.0.*,127.0.0.1
PermitRootLogin yes
我认为此功能已存在近 2 个主要版本,因此...令人惊讶的是没有人早点回答这个问题。
比赛结束后你还可以做其他事情,比如启用端口转发等......