本地SSH无法连接云服务器(浏览器可访问)排查方案
·
本地SSH无法连接云服务器(浏览器可访问)排查方案
问题现象
浏览器能正常访问云服务器,但本地SSH连接失败,执行 telnet 服务器IP 22 提示不可达,开启智能加速后可正常SSH登录。
核心排查步骤(按优先级排序)
1. 验证SSH服务状态与端口监听
通过服务器控制台(或CloudShell)执行以下命令,确认服务正常运行:
# 检查sshd服务状态(Ubuntu/Debian用ssh,CentOS用sshd)
systemctl status sshd
# 若未运行,启动并设开机自启
systemctl start sshd && systemctl enable sshd
# 查看22端口监听(需显示0.0.0.0:22或:::22)
ss -tuln | grep 22
若端口无监听,编辑配置文件 /etc/ssh/sshd_config:
- 确保
Port 22未被注释(删除开头#) - 确认
ListenAddress 0.0.0.0(监听所有网卡) - 保存后重启服务:
systemctl restart sshd
2. 检查云安全组与防火墙规则
(1)云安全组(华为云等通用操作)
- 登录云服务器控制台→进入安全组→入方向规则
- 确认已放行TCP 22端口,源地址设为
0.0.0.0/0(临时测试)或本地公网IP(安全) - 优先级设为100以内,保存后等待1-2分钟生效
(2)服务器本地防火墙
根据系统类型执行对应命令:
- CentOS/RHEL(firewalld):
firewall-cmd --permanent --add-port=22/tcp && firewall-cmd --reload
- Ubuntu/Debian(ufw):
ufw allow 22/tcp && ufw reload
- 清理iptables旧规则:
iptables -F INPUT && iptables -I INPUT -p tcp --dport 22 -j ACCEPT
3. 排查网络链路连通性
本地电脑执行路由跟踪命令,检测链路是否阻断:
- Windows系统:
tracert 服务器IP - Linux/Mac系统:
traceroute 服务器IP
若某一跳出现“* * *”超时,说明中间节点阻断通信,属于运营商路由限制。
4. 额外排查SELinux拦截(部分Linux系统)
若上述步骤无效,临时关闭SELinux测试:
setenforce 0
若测试连通,执行以下命令永久放行:
semanage port -a -t ssh_port_t -p tcp 22 && setenforce 1
问题根因与解决方案
核心原因
服务器SSH服务与端口配置正常,问题出在本地到服务器的网络链路:
- 本地运营商临时管控22端口或IP段
- 中间网络节点路由策略限制
- 云厂商安全系统误拦截本地IP
高效解决方案
- 优先使用智能加速功能,通过优化链路绕开阻断节点;
- 更换SSH端口(避开22端口限制):
- 编辑
/etc/ssh/sshd_config,将Port 22改为Port 2222(自定义端口) - 云安全组与防火墙同步放行新端口
- 本地连接命令:
ssh -p 新端口 用户名@服务器IP
- 编辑
- 备选方案:部署Web SSH工具(如webssh),通过浏览器直接连接。
总结
此类“浏览器可访问、SSH直连失败”的场景,多为网络链路限制或临时策略调整导致。优先使用智能加速是最高效的解决方式,若需直连可更换SSH端口或联系运营商/云厂商排查IP拦截问题。
更多推荐

所有评论(0)