关键在于修改sshd_config中的listenaddress,指定目标网卡ip(如listenaddress 192.168.10.100),注释掉0.0.0.0和::,重启sshd后用ss -tlnp | grep :22验证仅绑定该ip监听。

要让 OpenSSH 仅通过特定物理网卡(即绑定到某个 IP 地址)响应远程连接,关键在于限制 sshd 服务的监听地址,而不是靠防火墙或网络策略做后置过滤。这样既减少攻击面,又避免无效连接占用资源。
修改 sshd_config 中的 ListenAddress
OpenSSH 默认监听所有可用地址(0.0.0.0 或 ::),需显式指定目标网卡的 IP:
- 编辑配置文件:
sudo vim /etc/ssh/sshd_config - 找到并取消注释或添加
ListenAddress行,填入该网卡的实际 IPv4 地址,例如:ListenAddress 192.168.10.100 - 若该网卡还有 IPv6 地址且你也想启用,可再加一行:
ListenAddress 2001:db8::100 - 确保删掉或注释掉其他
ListenAddress行(尤其是ListenAddress 0.0.0.0和ListenAddress ::)
确认网卡 IP 并避免配置错误
操作前务必核实目标网卡当前生效的 IP:
- 运行
ip -4 addr show查看 IPv4 地址,注意识别对应网卡名(如ens33、eth0) - 确保该 IP 是静态分配或由 DHCP 稳定授予;若使用 DHCP 且地址可能变动,应先设为静态,否则重启后 SSH 可能无法监听
- 不要填写网关、广播地址或未激活的别名 IP
重启服务并验证监听状态
保存配置后必须重载服务,并检查是否真正生效:
- 执行
sudo systemctl restart sshd - 运行
sudo ss -tlnp | grep :22或sudo netstat -tlnp | grep :22 - 输出中应只看到类似
*:22→ 实际是监听所有地址(错误);192.168.10.100:22→ 正确绑定到指定 IP - 从其他网段或另一张网卡所在网络尝试连接,应被拒绝(连接超时或直接被拒)
补充建议:配合 PermitRootLogin 和 AllowUsers 更稳妥
仅靠绑定网卡不能替代基础访问控制,建议同步收紧用户权限:
- 禁用 root 直接登录:
PermitRootLogin no - 明确允许的用户(推荐):
AllowUsers alice@192.168.10.0/24(限制来源网段)或AllowUsers bob(仅限本地用户) - 禁用 DNS 反查提升响应速度:
UseDNS no










