如何解决UFW防火墙阻止Ubuntu服务器SSH连接其他服务器的问题
如何解决UFW防火墙阻止Ubuntu服务器SSH连接其他服务器的问题
看起来你遇到的问题很明确——UFW防火墙限制了Server1主动发起的SSH出站连接,毕竟关掉防火墙就恢复正常,说明锅肯定在它身上。咱们一步步来排查解决:
第一步:检查UFW的默认出站策略
UFW默认是允许所有出站流量的,但如果之前你修改过默认规则,就可能导致出站被拒绝。你可以用下面的命令查看详细状态:
sudo ufw status verbose
看输出里的Default:行,如果显示Default: deny (outgoing),那就是出站默认被禁止了,这时候主动连其他服务器的SSH自然会被拦下来。
第二步:允许SSH出站流量
如果默认出站是拒绝状态,或者你需要单独放行22端口的出站请求,执行下面的命令添加规则:
sudo ufw allow out 22/tcp
添加完成后,重新加载UFW让规则生效:
sudo ufw reload
这时候再尝试从Server1 SSH到Server2,应该就能正常连接了。
额外排查:通过UFW日志定位问题
如果上面的方法没解决,你可以开启UFW日志来精准定位被拦截的流量:
- 先开启日志功能:
sudo ufw enable logging
- 尝试从Server1 SSH到Server2,等个10秒左右中断连接
- 查看最新的日志记录:
tail /var/log/ufw.log
找包含DENY的条目,看看是不是目标端口22的出站流量被拒绝——不过一般来说,只要放行出站22端口就能解决,因为UFW默认的状态检测会自动允许已发起连接的返回流量。
补充说明
你提到Server2能正常SSH到Server1、MacBook也能连Server1,这是因为你已经在UFW里允许了入站的22端口,和出站规则互不影响;而Server1连Server2属于出站请求,这部分规则没配置对就会被拦。
备注:内容来源于stack exchange,提问作者itinance




