用 match address 可按内网网段分发差异化权限,需确保条件精准、顺序正确、配置项匹配;支持叠加 group 实现“网段+角色”双重控制,并可为 dmz 网段强制 sftp 只读访问。

用 Match Address 就能按内网网段分发差异化权限。关键不是“能不能”,而是条件写准、顺序排对、配置项选对——内网不同区域信任等级不同,策略自然该有区分。
匹配指定内网地址段并覆盖认证方式
比如办公网段(192.168.20.0/24)可信度高,允许密码+密钥双选;而访客网络(172.16.100.0/24)只许密钥登录,并限制尝试次数:
- Match Address 192.168.20.0/24
PasswordAuthentication yes
PubkeyAuthentication yes
MaxAuthTries 6 - Match Address 172.16.100.0/24
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 60
注意:两个 Match 块必须都放在 sshd_config 文件末尾,且前者要写在后者前面——因为首匹配生效,更具体的网段建议靠前写。
结合用户组实现“网段+角色”双重控制
单靠 IP 不够精细?可以叠加 Group 条件。例如,运维组从管理网段(10.10.0.0/16)登录时启用端口转发,但从其他内网段登录则禁用:
- Match Address 10.10.0.0/16 Group ops_team
AllowTcpForwarding yes
PermitTTY yes - Match Group ops_team
AllowTcpForwarding no
PermitTTY yes
第二块是兜底规则:只要属于 ops_team 组,不管从哪来,默认禁用端口转发;第一块是例外——仅当同时满足“来自 10.10.0.0/16”和“属于 ops_team”才放开权限。
为隔离区网段强制 SFTP 只读访问
DMZ 或测试区网段(如 192.168.50.0/24)通常只需文件传输能力,可直接锁定为 SFTP 模式、禁用 shell,并绑定 chroot 目录:
- Match Address 192.168.50.0/24
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PermitTTY no
ChrootDirectory /srv/sftp/%u
ChrootDirectory 路径中 %u 自动替换为用户名,对应目录需满足:属主 root、不可写(chmod 755 /srv/sftp/alice),其下子目录(如 upload)再单独授权给用户。
验证与避坑要点
改完配置别急着重启,先语法检查:
- 运行 sudo sshd -t 确认无报错
- 用 ssh -o LogLevel=DEBUG1 -p 22 user@host 连接,看日志里是否命中预期 Match 块
- Address 匹配的是 TCP 源 IP,经 NAT 或反向代理后可能失真,必要时配合 ProxyProtocol 或日志溯源
- 全局配置里的 DenyUsers、AllowUsers 仍生效,Match 不会绕过它们——建议用 Match + AllowUsers 组合做最终准入










