Match Address可按来源网段施加不同策略,关键在CIDR格式匹配、顺序控制(精确网段优先、0.0.0.0/0兜底)及配套配置(如PasswordAuthentication、AllowUsers等),并需结合防火墙与sudoers增强控制。

直接用 Match Address 就能按来源网段施加不同策略,关键在条件写法、顺序控制和配套限制是否到位。
匹配网段的写法要准确
Address 支持 CIDR 格式,多个网段用逗号分隔,不加空格:
-
Match Address 192.168.5.0/24—— 匹配该子网全部 IPv4 地址 -
Match Address 2001:db8::/32, 10.10.0.0/16—— 同时支持 IPv6 和 IPv4 网段 -
Match Address !127.0.0.1, !::1—— 排除本地回环(注意取反符号!)
策略差异要落在具体行为上
仅匹配不够,得搭配可生效的配置项。常见组合示例:
- 办公网段(192.168.10.0/24)允许密码+密钥双选,但限制尝试次数:
Match Address 192.168.10.0/24<br> MaxAuthTries 4<br> PasswordAuthentication yes
- 运维专线段(10.20.30.0/28)强制密钥,禁用密码,且只允许特定用户登录:
Match Address 10.20.30.0/28<br> AllowUsers deploy backup ops<br> PasswordAuthentication no<br> PubkeyAuthentication yes
- 公网地址(除白名单外)一律拒绝交互式登录,只允 SFTP:
Match Address 0.0.0.0/0<br> ForceCommand internal-sftp<br> PermitTTY no<br> X11Forwarding no
顺序和兜底必须明确
OpenSSH 按配置文件中从上到下的顺序匹配,**首个满足条件的 Match 块立即生效,后续不再检查**。所以:
- 把更精确的网段(如 /28、/32)放在前面
- 把宽泛匹配(如
0.0.0.0/0或*)放在最后作兜底 - 避免全局
DenyUsers *写在 Match 块之前——它会直接拦截,Match 失效
配合系统级控制更稳妥
Match 只管 SSH 连接建立阶段,真实访问控制还需叠加:
- 防火墙(如 iptables/nftables)先于 SSH 服务过滤流量,减轻负载
- 若需按 IP 控制命令权限,得靠
sudoers中的Defaults@host或Runas_Spec结合环境变量识别来源 - Chroot 或容器化部署时,Address 匹配仍有效,但需确保
ChrootDirectory路径对目标网段用户可访问且安全

















