+++++++++++++++++++++++++++++++++++++++++++

标题:xshell通过ssh连接Linux失败(非网络问题)

时间:2019年6月20日

+++++++++++++++++++++++++++++++++++++++++++

在学习系统防火墙(iptables)时,个人在自己搭建的虚拟机上调整防火墙策略(有的策略是通过iptables命令调整,有的是通过直接修改iptables策略配置文件进行调整)。再一次调整完防火墙后再通过xshell远程连接软件连接虚拟机时,突然发现无法正常连接,具体表现为服务器链接建立成功,但无法登录到控制台。

首先考虑到是否配置sshd的策略:经检查后sshd策略已经写到iptables的策略配置文件中了。

其次考虑到是否没有从新加载iptables配置文件:使用命令service iptables restart重启后依旧不能正常连接。

然后考虑到可能是sshd配置文件开启了认证和DNS解析模式导致超时连接,修改sshd_config后依旧无法正常连接。

由于排除了sshd存在问题的可能后,最大的可能性就是出现在iptables的策略中。于是通过命令service iptables stop将防火墙关闭后,发现xshell可以正常连接到服务器。由此终于可以定位到问题所在了。

可是经过反复对iptables的策略进行排查,确认策略绝对是没有问题的。那么问题到底出现在哪了呢?这时候想起在学校时常用的一条命令就是iptables -F清空防火墙策略。考虑到实际应用,于是使用命令cp /etc/sysconfig/iptables /bak备份防火墙策略,然后使用iptables -F清空防火墙策略,紧接着使用命令service iptables save将清空后的防火墙策略保存到策略配置文件中。经过这些操作即使不能解决该问题,也能回退到问题的最初的状态。紧接着打开了策略配置文件,发现里面多了名称为mangle的表信息,于是在vim编辑器中将该部分信息删除。再重新使用命令service iptables restart重新启动防火墙。现在再将备份的策略通过复制的方式写到策略配置文件中。策略配置文件存在默认策略,例如:OUTPUT ACCEPT [118:17055],将所有的默认策略后方括号中的内容改为[0:0]。再重新启动防火墙。发现问题已经解决了。

当然会导致这种xshell不能连接ssh现象有很多种原因,而这只是其中的一种的解决方案。希望能够帮助大家解决实际问题。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐