不少人使用RAKsmart服务器的时候,遇到SSH突然无法连接的情况,故障诱因很多,简单的密码错误,严重的可能IP被墙。下面按照由浅入深的顺序梳理排查思路。
先在本地网络排查基础问题。切换手机热点尝试连接服务器,如果热点可以连上,家里宽带不行,说明问题出在本地网络,可以重启路由器,更换DNS测试。Windows防火墙或者第三方安全软件,有时会拦截SSH客户端出站请求,可以临时关闭重试。使用telnet或者nc工具检测端口连通性,执行telnet 你的服务器IP 22,提示Connection refused代表请求抵达服务器后被拒绝;长时间卡住无返回,大概率端口被防火墙拦截。

本地确认无异常,下一步打开RAKsmart后台VNC控制台查看服务器状态。登录RAKsmart后台找到对应服务器,进入VNC终端,能够成功进入系统登录界面代表服务器本身正常,故障来自SSH服务或者系统防火墙规则。VNC也无法登录,大概率服务器宕机、系统损坏,在SolusVM面板执行重启,等待两三分钟后重试SSH连接。
“Connection refused”是高频报错,含义是数据包抵达服务器,但是连接请求被拒绝。这种情况大多SSH服务没有正常运行。VNC登录系统,执行systemctl status sshd查看服务状态,未启动就执行systemctl start sshd开启服务。提示命令不存在,代表系统没有安装SSH服务端,CentOS执行yum install openssh-server,Ubuntu执行apt install openssh-server。
还有一种情况,SSH服务监听端口不是默认22端口。修改端口之后忘记新端口号,继续用22端口连接自然失败。执行netstat -tlnp | grep sshd查看sshd监听端口,使用对应端口连接。修改SSH端口本身属于安全优化手段,22公网端口每天会遭遇大量暴力破解,更换成2222这类高位端口能减少攻击,前提是自己记录好端口。
系统防火墙也是引发连接拒绝的常见原因。firewalld或者iptables规则可能封禁22端口。执行firewall-cmd --list-all查看放行端口列表,没有22端口就执行firewall-cmd --permanent --add-port=22/tcp添加规则,之后重载防火墙。iptables环境执行iptables -L -n检查规则链是否存在丢弃、拒绝22端口流量的条目。除服务器内部防火墙,RAKsmart后台还有一层外部安全组,登录后台确认22端口入站流量放行。两层防火墙任意一层拦截,都会连不上SSH。
“Permission denied”和连接拒绝属于两类故障。这个报错代表SSH通道建立成功,身份校验失败。首先核对密码,留意大小写,确认没有多余空格、特殊符号。密码遗忘,在SolusVM面板重置密码,等待一两分钟再使用新密码登录。
密码确认无误依旧提示权限拒绝,检查两处配置。/etc/ssh/sshd_config文件内PermitRootLogin参数,如果设置为no,root账号禁止SSH登录,修改为yes后重启sshd服务。还有AllowUsers配置项,如果限定了可登录用户,只能使用指定账号登录,root无法直接访问。另一种场景是密钥登录模式,服务器关闭密码认证(PasswordAuthentication no),只允许私钥登录,输入密码永远验证失败,需要使用匹配私钥连接。
基础排查全部做完依旧无法连接,就要考虑IP层面故障。国内用户使用海外服务器最常见就是IP被墙。判断方式简单:国内节点ping服务器IP不通,海外在线工具ping同一IP正常。国内不通海外可通,基本判定IP被墙。RAKsmart支持付费更换IP,一般三到五美元一次,部分套餐自带免费换IP额度,后台提交工单写明服务器ID以及换IP理由。更换IP之后建议立刻修改SSH端口,配置防火墙,关闭root密码登录改用密钥,降低再次被封禁概率。
还有更隐蔽的机房封禁。服务器存在异常发包、触发攻击检测,机房会启用Abuse机制临时或者永久封禁IP。登录RAKsmart客户后台,查找Abuse Suspension相关页面,查看封禁原因和处理进度。误封的话提交工单说明情况申请解封,这类封禁一般附带投诉记录,处理需要配合整改。
网络路由异常会造成SSH连接不稳定,能连上但是频繁掉线,延迟波动大,可以用MTR工具追踪回程路由。服务器端执行mtr -rwzc 100 你的本地公网IP,查看往返链路节点。回程路由走到202.97开头的163骨干节点,丢包集中在该段,说明使用普通国际线路,晚高峰拥堵导致掉线。RAKsmart精品CN2线路走电信CN2 GIA(AS4809)、联通9929、移动CMIN2,全程不走163骨干。如果服务器是普通BGP线路,可以提交工单补差价升级精品CN2。
Fail2ban是容易被忽略的组件,用来封禁多次密码错误的IP,抵御SSH暴力破解。但本地连续输错密码,自身IP也会被它封禁。VNC登录服务器(VNC不走SSH通道,不受Fail2ban限制),执行fail2ban-client status sshd查看封禁IP列表。本地IP在列表里,执行fail2ban-client set sshd unbanip 你的IP手动解封。默认封禁时长十分钟,等待到期会自动解除,手动解封更快。解封之后把常用IP添加到ignoreip白名单,防止后续误封。
全部排查步骤走完SSH依旧无法访问,不要再自行调试,直接提交工单。RAKsmart提供7×24小时中文技术支持,工单写明服务器IP、故障发生时间、已经完成的排查操作以及报错信息,客服定位故障效率更高,比自己在论坛找方案节省大量时间。