当前Linux Web环境的安装,在无可视化界面面板上我们可能会较多的选择军哥的LNMP,以及最近几年出现的OneinStack,后者发展比较迅猛主要是其功能和组合选项较多,反正两者的使用用户群都会有,还是看各自的喜好,毕竟功能上也是差异不大的,只要我们熟悉哪个就行。
最近公司的一些服务器WEB环境有在使用OneinStack一键安装环境,但是连续几次出现在安装之后无法连接SSH的事情,包括有些已经在用的环境也会突发出现无法连接,但是WEB环境是正常运行的。包括"解决Linode SSH端口不通 利用Launch Lish Console修改端口问题"问题后来想想也应该是这个问题,开始以为是端口被封。
对于这个事情的出现老左已经反馈给官方,让其检查下是不是脚本里存在的问题,因为我遇到的不是一次,包括昨天下午公司的一台服务器配置环境的时候也出现这样的问题,然后通过VNC修改才得以解决,这不将这次修改解决OneinStack安装环境之后无法连接SSH解决方法记录下来,如果有需要的朋友可以参考。
第一、事件和症状
我们开始还是正常安装官方"OneinStack一键安装JAVA/Tomcat/Nginx/MySQL网站环境"提供的脚本进行安装环境,从实际的抽样调查看,也有部分环境是没有这些问题的,这个不清楚是不是与服务商和系统镜像有关系,不管如何既然出现问题就还需要解决。
如果会出现问题的前提肯定是安装没有问题,安装完毕之后我们在地址栏输入IP地址,可以打开默认成功环境页面,以及可以打开phpmyadmin用户端。重启服务器之后,不能再次链接SSH,无论我们在安装OneinStack的时候默认22端口或者修改自己的端口(一般都修改端口)都会这样。
毕竟多次出现这样的问题之后,就排除端口被封的问题,因为不可能每次安装随机的一个端口就被封,哪有这么巧合的事情。所以肯定是因为安装OneinStack之后,我们自定义的Port端口没有被写入iptables中,然后导致无法放开。
第二、解决问题
A - 如果我们是类似阿里云、腾讯云等云主机商有安全策略的,我们需要在策略条件中开放设置的自定义SSH端口。如果放开端口之后,还是不能解决问题,那就是iptables中也没有被写入问题。
B - 通过VNC解决问题
既然我们SSH无法连接,那只能通过服务器后台大部分都可能自带的VNC远程链接登入然后进行解决。
登入VNC之后,老左检查当前开放的端口发现没有设定的端口,看来问题就在这里了。我们需要去确认下有没有添加这个端口,以及后面在检查iptables规则。
检查"/etc/ssh/sshd_config"文件,是不是有我们设定的端口,因为在安装oneinstack的时候可以自定义端口的。这里看到是有我们的端口,那问题这里可以排除,继续后面。
然后我们需要将iptables端口添加进来
/sbin/iptables -I INPUT -p tcp --dport 23451 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/rc.d/init.d/iptables restart
根据我们设定的端口添加然后保存。
第三、确认和检查
设定完毕之后,我们再重启服务器后再检查端口是不是有设定的。
看到设定的端口还在没有丢失。然后我们再本地SSH客户端登入看看是否有问题,至少这个问题当前方法是可以解决了。
总结,一般出现这样的问题可能是安全策略没有开启端口,或者就是安装过程中不懂什么原因没有写入且保存到iptables规则中,我们通过远程添加端口即可。