阿里云国际版 ECS 无法远程连接:公网 IP、安全组、SSH 与 RDP 排查教程
阿里云国际版 ECS 创建完成后,Linux 服务器通常通过 SSH 连接,Windows Server 则主要通过 RDP 远程桌面连接。出现连接失败时,问题不一定来自账号或服务器本身,也不应直接通过重装系统解决。
一次完整的远程连接至少涉及本地网络、公网 IP、安全组、VPC 网络、系统防火墙、远程服务和登录凭据。任何一层配置异常,都可能表现为“服务器连接不上”。
有效的排查方法不是反复重启实例,而是先根据错误信息确定故障层级,再按照网络入口、端口访问、系统服务和身份验证的顺序逐项检查。
先根据错误提示判断故障范围
不同错误信息对应的排查方向并不相同。
| 错误表现 | 主要排查方向 |
| Connection timed out | 公网 IP、安全组、网络 ACL、系统防火墙、本地网络 |
| Connection refused | SSH 或 RDP 服务未启动、端口未监听、远程端口已修改 |
| Permission denied | 用户名、密码、SSH 密钥或登录策略 |
| Permission denied (publickey) | 密钥不匹配、密钥权限错误、实例绑定了其他密钥 |
| RDP 无法连接到远程计算机 | 3389 端口、Remote Desktop Services、Windows 防火墙 |
| 服务器可以连接,但网站打不开 | 80/443 端口、Web 服务、域名解析或应用配置 |
Connection timed out 通常表示客户端没有收到服务器响应,应优先排查公网地址和访问控制;Connection refused 则往往说明目标主机可以到达,但对应端口没有服务监听,或者连接被系统主动拒绝。阿里云官方对 SSH 超时的建议同样是先核对公网 IP、安全组、实例运行状态,并使用控制台自助诊断工具。
第一层检查:实例状态与公网连接入口
确认地域、实例状态和健康状态
进入阿里云国际版控制台,在 ECS 实例列表中确认以下信息:
- 当前控制台选择的是实例所在地域;
- 实例状态为“运行中”;
- 实例健康状态正常;
- 使用的 IP 地址确实属于目标实例;
- 实例近期没有更换系统、释放公网 IP 或重新绑定弹性公网 IP。
地域选择错误是常见误判。不同地域的 ECS、VPC、安全组和公网 IP 相互独立,在新加坡地域创建的安全组不能直接用于香港地域的实例。
确认实例是否具有公网 IP
通过本地 SSH、Xshell、PuTTY 或远程桌面客户端直接连接 ECS 时,实例通常需要固定公网 IP 或弹性公网 IP。只有私网 IP 的实例,不能直接从普通互联网环境访问,需要通过同一 VPC、VPN、堡垒机、Workbench 私网连接或 Session Manager 等方式进入。
在实例详情页检查“公网 IP 地址”字段。如果只有类似以下形式的地址,通常属于私网地址:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
这类地址不能直接填写到公网 SSH 或 RDP 客户端中。
第二层检查:安全组是否真正放行端口
安全组是 ECS 实例的虚拟防火墙,负责控制实例的入方向和出方向流量。Linux 默认 SSH 端口一般为 TCP 22,Windows 默认 RDP 端口一般为 TCP 3389。
Linux SSH 安全组规则
建议添加以下入方向规则:
| 配置项 | 建议值 |
| 动作 | 允许 |
| 协议 | TCP |
| 端口范围 | 22/22 |
| 授权对象 | 当前管理员公网 IP/32 |
| 优先级 | 高于可能冲突的拒绝规则 |
如果 SSH 已修改为其他端口,例如 2222,则安全组也必须放行 2222/2222,仅放行默认的 22 端口不会生效。
Windows RDP 安全组规则
Windows Server 使用默认远程桌面端口时,应配置:
| 配置项 | 建议值 |
| 动作 | 允许 |
| 协议 | TCP |
| 端口范围 | 3389/3389 |
| 授权对象 | 当前管理员公网 IP/32 |
| 优先级 | 高于可能冲突的拒绝规则 |
部分默认安全组可能已经向 0.0.0.0/0 开放 22、3389 和 ICMP,但这不代表长期配置合理。阿里云官方建议将 SSH、RDP 和管理面板端口限制为可信 IP,避免直接向整个互联网开放。
检查全部关联安全组
一台 ECS 实例可能同时关联多个安全组。排查时不能只看其中一个安全组,还要确认是否存在优先级更高的拒绝规则。
当允许规则与拒绝规则发生冲突时,拒绝规则可能覆盖允许规则。实例关联多个安全组时,应同时检查所有安全组的入方向规则。
还要注意本地公网 IP 是否已经改变。家庭宽带、公司网络、移动热点和 VPN 出口地址可能不同。安全组只授权旧 IP 后,更换网络就会重新出现连接超时。
第三层检查:从本地测试目标端口
ping 只能用于判断 ICMP 是否可达,不能证明 SSH 或 RDP 端口已经开放。安全组没有放行 ICMP 时,实例可能无法 ping 通,但 SSH、RDP 或网站仍然可以正常访问。
macOS 或 Linux 可以测试 SSH 端口:
nc -vz 公网IP 22
使用自定义 SSH 端口时:
nc -vz 公网IP 2222
Windows PowerShell 可以测试 RDP 端口:
Test-NetConnection 公网IP -Port 3389
判断结果通常分为三种:
- 端口测试成功:云侧网络基本可达,继续排查账号、密码、密钥或远程服务配置;
- 测试超时:重点检查公网 IP、安全组、网络 ACL、本地出口网络和系统防火墙;
- 立即拒绝:重点检查 SSH、RDP 或对应服务是否正在监听。
阿里云控制台的安全组规则检查功能也可以检测 22、3389、80、443、8080 和 ICMP 等常见访问规则,并支持检查指定来源 IP 到 ECS 网卡的访问策略。
Linux ECS 的 SSH 连接排查
SSH 显示 Connection timed out
SSH 超时应依次确认:
- 实例是否处于运行状态;
- 公网 IP 是否正确;
- 安全组是否放行实际 SSH 端口;
- 当前公网 IP 是否在授权范围内;
- VPC 交换机是否关联了限制访问的网络 ACL;
- Linux 系统防火墙是否拦截 SSH;
- 本地公司网络或运营商是否限制目标端口。
网络连通性诊断不仅会检查 ECS 实例和安全组,还会检查网卡、交换机及其关联的网络 ACL。
SSH 显示 Connection refused
连接被拒绝时,通常需要从阿里云控制台通过 Workbench 或 VNC 进入实例,检查 SSH 服务是否运行。
CentOS、Alibaba Cloud Linux、Rocky Linux 等系统可以执行:
systemctl status sshd
Ubuntu、Debian 部分版本可以执行:
systemctl status ssh
检查端口监听状态:
ss -lntp | grep ssh
或者直接检查 22 端口:
ss -lntp | grep ‘:22’
如果 SSH 服务没有运行,可以尝试启动:
sudo systemctl start sshd
sudo systemctl enable sshd
Ubuntu 或 Debian 使用:
sudo systemctl start ssh
sudo systemctl enable ssh
如果服务已经运行,但监听的是 2222 等自定义端口,需要同时修改客户端端口和安全组规则。
检查 SSH 配置文件
执行以下命令查看关键配置:
sudo grep -E ‘^(Port|PermitRootLogin|PasswordAuthentication|PubkeyAuthentication|AllowUsers|DenyUsers)’ /etc/ssh/sshd_config
重点检查:
- Port 是否仍然为 22;
- PasswordAuthentication 是否允许密码登录;
- PubkeyAuthentication 是否允许密钥登录;
- PermitRootLogin 是否禁止 root 登录;
- AllowUsers 是否遗漏当前用户;
- DenyUsers 是否拒绝当前用户。
修改配置后不要立即重启 SSH。应先检查配置语法:
sudo sshd -t
确认没有报错后再执行:
sudo systemctl restart sshd
否则错误的 SSH 配置可能导致当前连接断开后无法重新登录。
检查 Linux 系统防火墙
安全组已经放行,并不代表系统内部防火墙也已允许访问。
使用 firewalld 的系统可以检查:
sudo firewall-cmd –list-all
放行默认 SSH 服务:
sudo firewall-cmd –permanent –add-service=ssh
sudo firewall-cmd –reload
使用 UFW 的系统可以检查:
sudo ufw status
放行 SSH:
sudo ufw allow 22/tcp
如果使用自定义端口,应将 22 替换为实际端口。阿里云官方的 Linux 文件传输与 SSH 排查说明也明确要求同时检查安全组和操作系统内部防火墙。
不建议为了排查而长期关闭系统防火墙,更不应直接开放全部端口。
SSH 显示 Permission denied
出现以下错误时:
Permission denied, please try again
说明网络连接通常已经建立,故障重点已经从网络层转到身份验证层。
应依次检查:
- 登录用户名是否正确;
- 密码是否属于当前实例;
- 是否使用了错误镜像的默认用户名;
- SSH 是否禁用了密码登录;
- root 用户是否被禁止远程登录;
- 用户是否被写入 DenyUsers;
- 登录失败次数过多是否触发安全限制。
不要默认所有 Linux 镜像都使用 root。不同系统镜像可能使用 root、ecs-user、ubuntu 或其他用户名,应以创建实例时所选镜像的登录说明为准。
无法确认密码时,可以在 ECS 控制台重置实例密码,再按照控制台提示重启或使新密码生效。阿里云也建议在密码被拒绝时先重置密码,并通过自助诊断工具进一步检查。
SSH 显示 Permission denied (publickey)
密钥验证失败时应检查:
- 私钥文件是否对应实例当前绑定的密钥对;
- 客户端指定的私钥路径是否正确;
- 密钥对是否已经绑定到目标实例;
- 重新绑定密钥后是否已经重启实例;
- macOS 或 Linux 上的私钥权限是否为 400 或 600;
- PubkeyAuthentication 是否被关闭;
- 对应用户的 authorized_keys 是否被删除或修改。
macOS 或 Linux 可以修改私钥权限:
chmod 600 private-key.pem
然后指定私钥连接:
ssh -i private-key.pem 用户名@公网IP
阿里云官方说明,密钥对不匹配、私钥路径错误或文件权限不正确都可能触发 Permission denied (publickey);重新绑定或替换实例密钥后,通常需要重启实例才能生效。
Windows ECS 的 RDP 连接排查
确认 3389 端口监听状态
安全组已经放行 3389,但 Windows 内部没有服务监听时,远程桌面仍然无法连接。
可以通过 ECS 控制台的 VNC 进入 Windows,打开命令提示符并执行:
netstat -aon | findstr “3389”
如果没有返回结果,说明 3389 端口当前没有正常监听。阿里云官方将该命令作为判断 Remote Desktop Services 是否正常启用的重要步骤。
在 PowerShell 中还可以执行:
Get-Service TermService
Get-NetTCPConnection -LocalPort 3389 -State Listen
TermService 应处于运行状态。如果服务停止,可以尝试:
Start-Service TermService
Set-Service TermService -StartupType Automatic
启用 Windows 远程桌面
在 PowerShell 中执行:
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server” -Name fDenyTSConnections -Value 0 -Force
启用网络级别身份验证:
Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp” -Name UserAuthentication -Value 1 -Force
添加 Windows 防火墙规则:
netsh.exe advfirewall firewall add rule name=”Open RDP Port 3389″ dir=in action=allow protocol=TCP localport=3389
阿里云官方的 Windows ECS 修复流程同样要求确认 Remote Desktop Services 已启用、3389 端口正在监听,并检查 Windows 防火墙配置。
检查 RDP 端口是否被修改
部分用户为了降低扫描风险,会把默认 RDP 端口从 3389 修改为其他端口。修改后必须同步处理:
- Windows 注册表中的 RDP 监听端口;
- Windows 防火墙入方向规则;
- 阿里云安全组端口;
- 远程桌面客户端连接地址。
客户端需要使用以下格式:
公网IP:自定义端口
只修改注册表,没有修改安全组或系统防火墙,会直接造成远程连接失败。
检查账号、密码和账户锁定
网络与端口均正常,但登录失败时,应确认:
- 用户名是否为正确的管理员账号;
- 密码是否已修改;
- 新密码是否已经生效;
- 账户是否因多次失败登录被锁定;
- 本地保存的旧凭据是否被自动填充;
- 是否出现 CredSSP 或网络级别身份验证错误。
可以先删除本地远程桌面保存的旧凭据,再重新输入账号和密码。必要时通过 ECS 控制台重置密码,并使用 VNC 检查 Windows 本地用户状态。
Workbench、VNC 与 Session Manager 的恢复顺序
公网 SSH 或 RDP 无法使用时,不应立即重装系统。阿里云提供了多种控制台连接和恢复方式。
优先使用自助诊断
进入 ECS 控制台的自助问题排查页面,选择“实例无法连接”或安全组规则检查。诊断工具可以检查实例状态、安全组、网卡、系统负载和网络配置,适合先排除明显的云侧配置错误。
使用 Workbench
Workbench 是阿里云提供的浏览器远程连接工具,可以用于 Linux 和 Windows 实例。部分连接场景下,系统会提示添加 Workbench 所需的安全组规则。
需要注意,Workbench 登录失败并不能完全证明实例已经损坏。SSH、RDP 服务、凭据和 Workbench 授权规则异常,都可能影响连接。
使用 VNC 修复系统内部配置
当安全组配置正确,但 SSH、RDP、系统防火墙或远程服务出现异常时,可以从 ECS 实例详情页进入 VNC,检查操作系统内部配置。
常见修复内容包括:
- 启动 SSH 服务;
- 修复 sshd_config;
- 放行系统防火墙端口;
- 启用 Windows Remote Desktop Services;
- 检查 3389 端口监听;
- 重置密码;
- 修复错误的网络配置。
使用 Session Manager 降低公网端口暴露
对于长期运维,可以考虑使用 Session Manager。该方式通过 Cloud Assistant Agent 主动建立出方向连接,不需要长期向公网开放 SSH 22 或 RDP 3389,还可以用于没有公网 IP 的实例。
企业环境如果需要权限控制、操作审计和多人运维,则更适合使用堡垒机,而不是将管理端口直接向所有公网地址开放。
SSH 可以连接但网站打不开的排查方向
远程连接正常,不代表网站服务一定正常。
如果 SSH 可以登录,但浏览器无法访问网站,应继续检查:
- 安全组是否放行 TCP 80 和 443;
- Linux 防火墙是否放行 80 和 443;
- Nginx、Apache、IIS 或应用服务是否运行;
- Web 服务是否监听 0.0.0.0,而不是只监听 127.0.0.1;
- 域名是否解析到正确公网 IP;
- HTTPS 证书和反向代理配置是否正确。
Linux 可以执行:
ss -lntp | grep -E ‘:80|:443’
检查本机服务:
curl -I http://127.0.0.1
curl -Ik https://127.0.0.1
如果本机访问正常,但公网访问失败,重点检查安全组、网络 ACL 和系统防火墙;如果本机访问也失败,则问题主要位于 Web 服务或应用内部,而不是阿里云国际版账号。
不建议直接执行的处理方式
远程连接失败时,以下处理方式容易扩大故障:
- 直接重装系统;
- 删除全部安全组规则;
- 将所有端口开放给 0.0.0.0/0;
- 长期关闭 Linux 或 Windows 防火墙;
- 没有备份就修改 SSH 配置;
- 在没有备用会话时修改 SSH 或 RDP 端口;
- 反复输入错误密码导致账户锁定;
- 将连接失败直接判断为账号被风控。
服务器能够正常创建和启动,只是 SSH 或 RDP 不通时,通常属于网络、系统或凭据配置问题。只有实例无法创建、控制台操作被拦截、地域或规格不可用、账户权限异常时,才需要进一步排查阿里云国际版账号限制与风控问题。
阿里云 ECS 远程连接的最终排查顺序
完整处理顺序可以归纳为:
- 确认实例地域、运行状态和健康状态;
- 确认公网 IP 或弹性公网 IP;
- 检查安全组实际开放的端口;
- 检查全部安全组和高优先级拒绝规则;
- 测试本地到目标端口的连通性;
- 检查网络 ACL 和本地网络出口;
- 通过 Workbench 或 VNC 进入系统;
- 检查 SSH、RDP 和系统防火墙;
- 检查端口监听状态;
- 检查用户名、密码和 SSH 密钥;
- 使用控制台自助诊断;
- 最后再考虑系统恢复或重装。
远程连接故障的核心是区分问题发生在云平台网络层、操作系统服务层,还是身份验证层。按照固定顺序排查,通常比反复修改安全组、重启实例或重置系统更有效。