SSH无法登录阿里云主机问题排查解决小记

【精选秒杀】热卖云产品限量抢,云服务器20元/月起,服务稳定,价格更优

我的博客:码中人 – 深入编程 – Program into Your Language 部署在阿里云ECS主机上,自2014年开始,网站正常运营1500多天了。平常都是通过SSH连接该主机进行代码更新。

最近家里更换了宽带,出现了新的问题:网站能够正常访问,无法通过SSH连接阿里云Linux主机。

首先我们来看下SSH登录相关的因素:

客户端

首先,确认云主机的账号密码的准确性。我用其它的网段(比如,手机流量热点)可以正常登录,客户端确认没有问题。联想到我最近换宽带供应商了,应该了中间网络出了问题。

中间网络

网站能正常访问,能ping通。进行telnet命令进行端口测试,判断是否存在中间网络异常。果然,端口连接失败。

接下来,我windows下用tracetcp通过发送TCP数据包进行链路探测,以分析链路是否存在中间节点对目标端口做了阻断。

可见tcp请求完全没有去到公网,应该是局域网路由器的问题。

解决办法:更换服务器SSH端口

应该宽带运营商把22号端口给禁用了。我打开家里路由器的设置,也没看到怎么设置ssh端口。没办法。

山不过来,我自过去。因为能通过其它网段登录,于是我连接到云主机,把ssh的端口号改成其它。修改 Linux 服务器默认远程端口步骤如下:

  1. 远程连接并登录到 Linux 实例。
  2. 运行 vi /etc/ssh/sshd_config 命令。
  3. 在键盘上按“I”键,进入编辑状态。添加新的远程服务端口,本节以 1022 端口为例。在Port 22下输入Port 1022
  4. 在键盘上按“Esc”,输入:wq退出编辑状态。
  5. 执行以下命令重启实例,之后您可以通过 22 端口和 1022 端口 SSH 登录到 Linux 实例。
    service sshd restart
  6. (可选)配置防火墙。使用 CentOS 7 以前的版本并开启默认防火墙 iptables 时,应注意 iptables 默认不拦截访问,如果您配置了 iptables 规则,需要执行iptables -A INPUT -p tcp –dport 1022 -j ACCEPT配置防火墙。然后执行service iptables restart 重启防火墙。

其中,第六个步骤(可选)也很重要。我修改SSH端口的时候,忘记了做第6个步骤。结果端口被修改后,因为防火墙的问题,任何网段都无法登录。通过在阿里云提交工单才知道怎么解决。就是在阿里云网页控制台添加防火墙规则。

防火墙功能支持用户对服务器的端口进行开启和关闭。服务器默认分别开启了 22 端口(对应 SSH 服务),80 端口(对应 HTTP 服务),443 端口(对应 HTTPS 加密访问服务)。未在开放端口范围内的端口默认是关闭状态。

终于可以远程连接了。

参考资料