现象

使用 SSH 客户端连接云服务器时,出现两种截然不同的报错:连接超时(Connection timed out)和拒绝连接(Connection refused)。前者表示数据包发出去后没有任何回应,通常卡在握手阶段;后者表示服务器收到了请求,但明确回复“此端口无服务或拒绝”,响应速度很快。

原因

连接超时通常由网络层阻断引起:安全组/防火墙规则未放行 22 端口、服务器内网 IP 配置错误、服务器宕机或网络接口未启用、运营商链路故障。拒绝连接则多发生在应用层:SSH 服务(sshd)未运行、SSH 配置文件中监听端口或 IP 被修改、防火墙允许端口但服务未监听、或端口被其他进程占用。

先自查(3 分钟)

  1. 确认云服务器状态:登录奇异互动会员中心,检查实例是否为“运行中”。若已关机,先开机。
  2. 检查本地网络:在本地终端执行 ping 服务器公网 IP。如果 ping 不通,优先怀疑安全组或服务器内部防火墙;如果 ping 通但 SSH 超时,重点查安全组;如果 ping 通且 SSH 拒绝,重点查 SSH 服务状态。
  3. 确认 SSH 端口:检查是否使用了非标准端口(如 2222)。若修改过端口,确保客户端指定了正确端口。

解决步骤

第一步:检查并配置安全组规则。登录奇异互动会员中心,进入云服务器详情页,找到“安全组”或“防火墙”设置。确保入方向规则中,协议为 TCP,端口为 22(或你自定义的 SSH 端口),授权对象为 0.0.0.0/0 或你的特定 IP。

第二步:通过 VNC 控制台进入系统内部排查。如果 SSH 不通,使用会员中心提供的“VNC 控制台”功能登录系统。这是最关键的自救手段,因为 VNC 不依赖网络端口,只要机器在运行就能操作。

第三步:检查系统内部防火墙。以 Ubuntu 22.04/24.04 和 Debian 12 为例,检查 UFW 状态并放行端口:

sudo ufw status
sudo ufw allow 22/tcp
sudo ufw reload

以 CentOS 7 / Rocky Linux 9 为例,检查 firewalld 状态并放行端口:

sudo firewall-cmd --state
sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --reload

第四步:检查 SSH 服务状态。在 VNC 终端中执行以下命令,确认 sshd 是否正在运行:

sudo systemctl status sshd

如果服务未运行(显示 inactive 或 dead),尝试启动它:

sudo systemctl start sshd
sudo systemctl enable sshd

第五步:检查 SSH 配置文件。如果服务启动失败或启动后仍拒绝连接,检查配置文件中的监听设置:

sudo grep -E "Port|ListenAddress" /etc/ssh/sshd_config

确保 Port 为 22(或你预期的端口),且没有错误的 ListenAddress 限制。修改配置后必须重启服务:

注意:重启 SSH 服务前,请确保当前通过 VNC 登录,否则一旦重启导致配置错误,你将无法通过 SSH 连接,且若 VNC 断开则彻底失联。

sudo systemctl restart sshd

验证

回到本地终端,重新执行 SSH 连接命令。如果之前是超时,现在应该能进入密码输入界面;如果之前是拒绝,现在也应该能正常连接。为了确认端口监听,可以在 VNC 终端中执行:

sudo ss -tlnp | grep sshd

确认 22 端口处于 LISTEN 状态。

预防

  • 不要修改 SSH 默认端口,除非有明确的安全需求,且修改前务必配置好备用访问方式(如 VNC 或另一台跳板机)。
  • 定期备份 /etc/ssh/sshd_config 文件,以防配置误改导致服务无法启动。
  • 在安全组中,尽量限制源 IP 范围,避免对全网开放,减少被扫描攻击的风险。

在奇异互动如何最快处理

如果通过上述步骤仍无法解决,请立即使用奇异互动会员中心的“工单”功能。提交时,请务必附上以下信息以加速处理:1. 云服务器实例 ID;2. 报错截图(包含完整的超时或拒绝提示);3. 你执行过的自查命令及其输出结果(特别是 systemctl status sshd 和防火墙状态);4. 你使用的本地 IP 地址。若系统完全无响应,请在工单中说明已尝试通过 VNC 登录但失败,以便工程师优先检查底层硬件或网络链路。