核心思路是服务器端主动拒绝公网SSH连接,仅允堡垒机内网访问:一、修改sshd_config的ListenAddress为内网IP并重启;二、iptables放行堡垒机IP、拒绝其他SSH请求;三、云平台安全组仅允许堡垒机公网IP访问22端口;四、公网实测超时、堡垒机正常登录、ss命令确认仅监听内网地址。

直接切断服务器的公网 SSH 访问通道,核心思路是:让服务器自身拒绝所有来自公网的 SSH 连接请求,只保留堡垒机所在内网(或指定 IP 段)的访问权限。这不是靠堡垒机“拦住”外部流量,而是从服务器端彻底关闭公网入口。
一、禁用公网网卡上的 SSH 监听
默认情况下,OpenSSH 服务(sshd)会监听所有网卡(0.0.0.0:22)。需限制它仅监听内网网卡:
- 编辑
/etc/ssh/sshd_config,找到或添加ListenAddress行:
其中 192.168.10.10 是服务器的内网 IP(即与堡垒机同网段的地址);若有多块内网卡,可写多行。
- 确保没有其他
ListenAddress行(尤其避免出现ListenAddress 0.0.0.0或::); - 保存后执行
sudo systemctl restart sshd生效。
二、配置系统防火墙(推荐 iptables/nftables)
即使 SSH 只监听内网,防火墙仍是关键兜底措施。以 iptables 为例:
- 清空原有规则前先备份:
iptables-save > /root/iptables-backup; - 默认拒绝所有入站 SSH:
- 仅放行堡垒机 IP 的 SSH 请求(假设堡垒机内网出口 IP 是
192.168.10.5):
- 允许本地回环(必要):
iptables -A INPUT -i lo -j ACCEPT; - 保存规则:
iptables-save > /etc/iptables/rules.v4(Debian/Ubuntu)或对应路径。
三、配合云平台安全组/ACL
如果服务器部署在云上(如阿里云、华为云),必须同步收紧云厂商层的安全策略:
- 进入云控制台 → 安全组 → 编辑入方向规则;
- 删除或禁用所有允许公网 IP 访问 22 端口的规则;
- 仅添加一条规则:源 IP 填堡垒机的出口公网 IP(不是内网 IP),端口 22;
- 确认该安全组已绑定到目标服务器实例。
四、验证是否真正切断
完成上述步骤后,务必从公网环境实测:
- 用手机热点或非公司网络,尝试
ssh user@公网IP—— 应超时或被拒绝; - 从堡垒机 Web 或 SSH 客户端连接该服务器 —— 应正常登录;
- 登录后执行
ss -tlnp | grep :22,确认仅显示内网 IP 监听,无*:22。
不复杂但容易忽略:堡垒机本身不能替代服务器端的访问控制。只有三者协同(SSH 配置 + 主机防火墙 + 云安全组),才能真正堵死公网直连 SSH 的后门。

















