AllowUsers是OpenSSH原生、优先级最高且认证前拦截的白名单机制,需在/etc/ssh/sshd_config中严格按username@CIDR格式配置(如admin@192.168.10.0/24),不支持通配符;配置后须sudo sshd -t校验语法并sudo systemctl restart sshd生效,现代系统中/etc/hosts.allow已基本失效。

用 AllowUsers 限定用户和网段
这是首选方案,白名单逻辑,默认拒绝所有未明确列出的访问。
- 语法必须严格:用户名@CIDR网段,中间不能有空格,例如 admin@192.168.10.0/24 或 deploy@2001:db8::/64
- 支持 IPv4 CIDR(如
10.0.5.0/28)和 IPv6 网段,但不支持通配符(192.168.1.*是非法的) - 若只按网段不限用户,可写成 *@172.16.0.0/16,但生产环境建议绑定具体账号,避免宽泛授权
- 多个条目用空格分隔,例如:
AllowUsers admin@192.168.10.0/24 deploy@10.20.30.0/24
配置后必须重启并验证
修改保存后,规则不会自动生效,需手动操作:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 先检查语法是否正确:
sudo sshd -t—— 若报错,别重启,先修正配置 - 再重启服务:
sudo systemctl restart sshd(主流 systemd 系统) - 注意:重启会断开当前 SSH 连接,务必确保有备用访问方式(如云平台 VNC 或本地控制台)
别依赖 /etc/hosts.allow
这个文件在 OpenSSH 8.0+ 中基本失效,原因很实在:
- 现代发行版默认不编译 libwrap 支持,
ldd /usr/sbin/sshd | grep wrap返回空就说明完全没加载 TCP Wrappers - 即使写了
sshd: 192.168.1.0/24,实际也毫无作用,容易造成“已限制”的错觉 - 它属于旧式机制,优先级低、行为不可控,不推荐用于正式环境
防火墙可作补充防线
iptables/firewalld 不是替代方案,而是第二道保险:
- 例如只允许某网段连 SSH 端口:
sudo iptables -A INPUT -s 192.168.20.0/24 -p tcp --dport 22 -j ACCEPT - 再加一条拒绝所有 SSH 连接:
sudo iptables -A INPUT -p tcp --dport 22 -j DROP - 注意顺序:ACCEPT 规则必须在 DROP 之前,否则会被拦截
- 这类规则影响所有服务,粒度粗;而
AllowUsers专管 SSH 登录逻辑,更精准

















