华为云代理返现 华为云国际SSH连接失败解决

华为云国际 / 2026-04-14 18:51:09

下载.png

你有没有过这种经历:凌晨三点,咖啡凉透,盯着终端里那行刺眼的 ssh: connect to host xxx.xxx.xxx.xxx port 22: Connection timed out,手指悬在回车键上,像卡在人生十字路口——不是不想连,是连不上;不是不会配,是配了还是白配。

别慌。这不是玄学,也不是服务器成精了。这是华为云国际站(Huawei Cloud International)用户高频踩坑现场,而且90%的问题,其实根本不用重启实例、不用重装系统、更不用半夜call support——只需要三分钟,按顺序敲几行命令,就能把问题从根儿上薅出来。

先说结论:SSH连不上,无非两大派系

一类是根本见不到面——TCP三次握手都失败,比如 Connection timed outNo route to host;另一类是见了面但不认人——握手成功,但认证阶段翻车,比如 Permission denied (publickey)Connection refused(注意!这个refused ≠ timeout,它意味着端口监听了但拒你于门外)。

下面咱们不讲虚的,直接上“排查流水线”,按优先级从外往里、从网络层到应用层,一环扣一环。

第一关:你的电脑,能不能摸到这台云服务器的“门把手”?

打开终端,先执行:

ping -c 4 <你的公网IP>

如果全丢包(100% packet loss),别急着骂华为云——先查自己本地网络是否开了代理(尤其Mac用户,Safari/Chrome自动代理常偷偷劫持ICMP)。关掉代理再试。还丢包?那大概率是华为云国际站的安全组(Security Group)没放行ICMP——但别慌,SSH不依赖ping,真正要看的是端口通不通。

换招:

nc -zv <你的公网IP> 22

看到 succeeded!?恭喜,网络链路OK;若显示 Connection refused,说明22端口有服务但拒绝你;若卡住几秒后报 Operation timed out,那就是中间某道墙(安全组、NAT网关、甚至你本地防火墙)把包吞了。

第二关:安全组——华为云国际站最“沉默”的守门员

登录华为云国际站控制台 → 进入ECS实例详情页 → 左侧点「安全组」→ 看绑定的安全组规则。重点盯两条:

  • 入方向规则:必须有一条允许来源为 0.0.0.0/0(或你办公IP段)、协议为 TCP、端口范围为 22 的规则;
  • 出方向规则:默认全放行,一般不用动。

⚠️ 注意!国际站控制台默认语言是英文,安全组叫 Security Group,不是“防火墙”;且规则生效可能有30秒延迟,改完别立刻测,喝口水再敲命令。

第三关:实例本身——它醒着吗?它听得到吗?

进控制台,确认ECS状态是 Running(不是Stopped或Starting)。然后看「弹性公网IP」是否已绑定且状态为 Bound。曾有用户绑了EIP却忘了关「源/目的检查」(Source/Dest Check)——这是华为云国际站EC2兼容模式的隐藏开关,必须手动关闭!位置在:实例详情页 → 「更多」→ 「网络设置」→ 关闭「源/目的检查」。

接着,远程登录不了,但你能进控制台VNC(网页版终端)吗?能的话,赶紧登进去,敲:

sudo systemctl status sshd
# 或 Ubuntu 系:sudo systemctl status ssh

如果显示 inactive (dead),说明sshd进程根本没跑。启动它:

sudo systemctl start sshd
sudo systemctl enable sshd  # 开机自启,别下次又挂

再查监听:

sudo ss -tlnp | grep ':22'

理想输出是:LISTEN 0 128 *:22 *:* users:(("sshd",pid=1234,fd=3))。如果只显示 127.0.0.1:22,说明sshd只监听本地回环——得改配置。

第四关:sshd配置——那个总被忽略的 /etc/ssh/sshd_config

用VNC登录后,编辑:

sudo nano /etc/ssh/sshd_config

重点检查三行(取消注释并确保值正确):

ListenAddress 0.0.0.0  # 别写成 127.0.0.1!
Port 22                 # 别手抖改成别的数字(除非你真改了)
PermitRootLogin yes     # 国际站默认常为no,临时调试可开,修好记得关

改完重启服务:

sudo systemctl restart sshd

顺手加个保险:

sudo ufw status verbose  # 查UFW状态(Ubuntu)
sudo ufw allow OpenSSH   # 若启用,放行SSH

第五关:密钥与权限——最冤的“Permission denied”

如果你用私钥登录,报错 Permission denied (publickey),99%是以下三件事之一:

  1. 本地私钥权限过大:Mac/Linux下必须是600,否则OpenSSH直接拒载:
    chmod 600 ~/.ssh/id_rsa
  2. 公钥没塞对地方:VNC里检查 /home/youruser/.ssh/authorized_keys 是否存在、内容是否是你公钥全文(一行,无换行无空格),且文件权限是600,目录是700;
  3. 用户名错了:华为云国际站Ubuntu镜像默认用户是 ubuntu,CentOS是 rootcentos,别硬套国内习惯写 adminecs-user

第六关:DNS与区域特性——国际站专属彩蛋

华为云代理返现 有些用户发现:同一IP,国内连不上,国外VPN一开就通。大概率是华为云国际站某些Region(如新加坡sg-sg-1、德国de-de-1)的DNS解析策略导致。解决方案简单粗暴:

ssh -o ConnectTimeout=10 -o ServerAliveInterval=30 -o StrictHostKeyChecking=no youruser@<公网IP>

加上这些选项,能绕过部分DNS缓存僵局。另外,国际站ECS的hostname常带区域后缀(如 i-xxx.ap-southeast-1.compute.internal),别拿它当登录地址用——只认IP。

终极懒人包:一键诊断脚本(复制即用)

#!/bin/bash
 echo "=== 华为云国际站SSH连通性快检 ==="
 echo "1. 检查sshd状态..."
 sudo systemctl is-active sshd && echo "✓ sshd运行中" || echo "✗ sshd未运行"
 echo "2. 检查端口监听..."
 sudo ss -tln | grep ':22' && echo "✓ 22端口已监听" || echo "✗ 22端口未监听"
 echo "3. 检查authorized_keys..."
 [ -f ~/.ssh/authorized_keys ] && echo "✓ authorized_keys存在" || echo "✗ authorized_keys缺失"
 echo "4. 检查密钥权限..."
 [ $(stat -c "%a" ~/.ssh/id_rsa 2>/dev/null) == "600" ] && echo "✓ 私钥权限正确" || echo "✗ 私钥权限需chmod 600"

最后送你一句真·血泪口诀:
“外查安全组,内看sshd;端口要监听,密钥要干净;IP别输错,用户要对名;国际站多一堵墙,VNC永远是底牌。”

记住,所有云服务的故障,本质都是配置的错位。你不是搞不定,只是还没找到那个被悄悄改掉的ListenAddress。现在,去终端敲下第一行命令吧——今晚,让SSH连上,比奶茶续命还管用。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系