系统centos7.9, SSH升级版本9.7后,重启系统,发现SSH端口20109不通了,VNC登录查看iptable规则,如下图
20109端口是存在的,这个端口的iptable规则是写在/etc/rc.local中的,开机自启,如下图
在服务器里执行 telnet 127.0.0.1 20109 也是通的
但是从外部访问20109就是不通,除非清空iptable规则,执行 iptables -F ,20109端口就通了,不知道为什么?
系统centos7.9, SSH升级版本9.7后,重启系统,发现SSH端口20109不通了,VNC登录查看iptable规则,如下图
20109端口是存在的,这个端口的iptable规则是写在/etc/rc.local中的,开机自启,如下图
在服务器里执行 telnet 127.0.0.1 20109 也是通的
但是从外部访问20109就是不通,除非清空iptable规则,执行 iptables -F ,20109端口就通了,不知道为什么?
引自免费微信小程序:皆我百晓生
看起来您的问题可能在于新的SSH版本(OpenSSH 9.7)与现有的iptables防火墙规则之间存在冲突。您可以通过检查SSH的日志文件来获取更多关于连接失败的具体信息。通常情况下,日志文件位于 /var/log/auth.log
或 /var/log/secure
。
首先,确认SSH服务是否正在运行,并且配置正确监听20109端口。您可以使用以下命令检查:
systemctl status sshd
接下来,检查SSH配置文件,确保它监听了20109端口。编辑配置文件 /etc/ssh/sshd_config
,找到 Port
行并确认其值为20109:
Port 20109
然后,重新加载SSH配置以应用更改:
systemctl reload sshd
如果配置看起来没有问题,那么可能是新版本的OpenSSH在处理某些特定的连接时有所不同,这可能导致iptables规则无法正常工作。在这种情况下,您可以尝试更新iptables规则以适应新的SSH版本。将以下规则添加到您的iptables脚本中,替换您之前添加的规则:
iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 20109
这行命令会将所有发往默认SSH端口22的流量重定向到20109端口。然后,删除旧的规则,只保留接受20109端口的规则:
iptables -D INPUT -p tcp --dport 22 -j ACCEPT
保存更改并重启iptables以应用新规则:
systemctl restart iptables
最后,再次尝试从外部访问20109端口,看看问题是否解决。如果还是无法连接,请检查日志文件 /var/log/auth.log
或 /var/log/secure
,寻找有关连接失败的详细信息,这些信息可能会提供更多的线索。
如果问题依然存在,您也可以考虑暂时禁用iptables防火墙,以确定它是否是导致连接问题的原因。但请注意,这样做会使您的系统暴露于未授权的网络访问风险。要临时禁用iptables,请执行:
systemctl stop iptables
然后再次尝试从外部访问20109端口。如果此时可以连接,那么问题确实出在iptables上。您可能需要进一步调整规则或在不违反安全策略的前提下允许必要的连接。