当前位置: 首页 > news >正文

SSH连接失败排查与解决教程: Connection refused

前言

当使用云服务器(如阿里云、腾讯云、AWS 等)时,尝试在本地PC端使用图形化工具如 FinalShell、XShell可能会遇到 SSH 连接失败的问题。本文列举 SSH 连接失败的常见原因,并提供对应解决方案,帮助快速定位并解决问题。


一、问题现象

  • 使用 FinalShell、XShell等工具连接云服务器失败
  • 报错信息如:
    • Permission denied (publickey,password)
    • Can't connect to SOCKS proxy: Connection refused
    • Connection refused
    • No route to host
  • 云服务器已配置安全组放行 22 端口,但仍然无法连接

二、排查流程

1. 检查云服务器安全组是否放行 22 端口↓
2. 检查服务器 SSH 服务是否运行正常↓
3. 在本地终端使用 SSH 命令测试连接↓
4. 信任服务器指纹(known_hosts)↓
5. 再次使用图形工具连接

三、详细排查步骤

✅ 步骤 1:确认云服务器安全组是否放行 22 端口

为什么重要?

云服务器默认不会开放所有端口,你需要手动配置安全组规则,允许外部访问 SSH 端口(默认是 22)。

如何操作(以阿里云为例):
  1. 登录阿里云控制台
  2. 找到你的轻量应用服务器或 ECS 实例
  3. 进入“防火墙”或“安全组”页面
  4. 添加入站规则:
    • 协议类型:TCP
    • 端口范围:22
    • 授权对象(源IP):0.0.0.0/0(允许所有IP)或你本地的公网IP

✅ 步骤 2:确认服务器上的 SSH 服务是否运行

为什么重要?

即使你放行了 22 端口,如果服务器上的 SSH 服务没启动,也无法连接。

如何操作:
  1. 使用阿里云控制台提供的“远程连接”(如Workbench)登录服务器
  2. 执行命令查看 SSH 状态:
sudo systemctl status sshd
# 或
sudo service ssh status
  1. 如果未运行,启动 SSH 服务:
sudo systemctl start sshd
sudo systemctl enable sshd

✅ 步骤 3:在本地终端使用 SSH 命令测试连接

为什么重要?

图形化工具(如 FinalShell)可能会隐藏底层的 SSH 交互细节,使用命令行可以更清晰地看到报错信息。

操作命令:
ssh username@your_server_ip

例如:

ssh root@139.155.88.173
可能提示:
The authenticity of host '139.155.88.173 (139.155.88.173)' can't be established.
***** key fingerprint is ******:...
Are you sure you want to continue connecting (yes/no/[fingerprint])?

这是 SSH 的主机指纹验证机制,防止中间人攻击。

解决方法:

输入:

yes

系统会将服务器的指纹记录到本地:

~/.ssh/known_hosts

此时,服务器的指纹已被信任。


✅ 步骤 4:再次使用图形工具连接(如 FinalShell)

为什么现在可以连接了?

因为:

  • 命令行工具将服务器指纹写入了 ~/.ssh/known_hosts
  • FinalShell、Xshell 等图形工具默认使用系统 SSH 配置和密钥
  • 所以现在它“知道”这个服务器是可信的,就可以正常连接了

四、常见问题补充

❓1. 为什么信任指纹后 FinalShell 就可以连接了?

FinalShell 等工具默认不会自动信任新服务器的公钥指纹,所以首次连接时会失败。但当你通过命令行信任了服务器后,FinalShell 会读取 .ssh/known_hosts 文件,发现该服务器已被信任,于是连接成功。


❓2. 如果服务器更换了 IP 或重装系统怎么办?

SSH 会检测到指纹不一致,提示如下:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

这说明服务器的 SSH 主机密钥已变更,可能是:

  • 服务器重装系统
  • 服务器更换了主机密钥
  • 中间人攻击(极少见)
解决办法:

手动删除 .ssh/known_hosts 中对应的服务器记录:

ssh-keygen -R 139.155.88.173

然后再重新连接即可。


❓3. 如何查看 .ssh/known_hosts 文件?

cat ~/.ssh/known_hosts

每行代表一个已信任的服务器指纹。


✅ 五、总结:SSH 连接失败排查清单

检查项是否完成说明
云服务器安全组是否放行 22 端口阿里云、腾讯云等需手动配置
服务器 SSH 服务是否运行通过 远程连接 登录检查
本地终端是否信任服务器指纹使用 ssh 命令并输入 yes
图形工具是否读取 .ssh/known_hostsFinalShell 等默认使用系统配置
用户名和密码是否正确Linux 区分大小写,注意默认用户
是否配置了错误的代理FinalShell 可能启用了 SOCKS 代理

📌 六、附录:常用命令汇总

# 测试端口是否通
telnet 139.155.88.173 22
nc -zv 139.155.88.173 22# SSH 连接服务器
ssh username@139.155.88.173# 查看 known_hosts 文件
cat ~/.ssh/known_hosts
http://www.lryc.cn/news/601116.html

相关文章:

  • 不正确的 clone() 方法实现与修复方案
  • java--JDBC
  • 【Canvas技法】绘制正N角星
  • 【数据结构】二叉树初阶详解(二):实现逻辑与代码拆解(超详版)
  • 计算机中的单位(详细易懂)
  • CH341 Linux驱动 没有 /dev/ttyCH341USB0
  • MySQL 基本查询
  • 【408二轮强化】数据结构——线性表
  • 最优估计准则与方法(4)最小二乘估计(LS)_学习笔记
  • 最优估计准则与方法(5)加权最小二乘估计(WLS)_学习笔记
  • 尝试几道算法题,提升python编程思维
  • C语言中:形参与实参的那些事
  • 1. Qt多线程开发
  • PYTHON从入门到实践-15数据可视化
  • 方案C,version2
  • 主要分布在腹侧海马体(vHPC)CA1区域(vCA1)的混合调谐细胞(mixed-tuning cells)对NLP中的深层语义分析的积极影响和启示
  • 深度解析 noisereduce:开源音频降噪库实践
  • C 与 C++ 的区别:发展、特性及优缺点详解
  • 对比JS“上下文”与“作用域”
  • 秋招Day19 - 分布式 - 分布式设计
  • RoPE:相对位置编码的旋转革命——原理、演进与大模型应用全景
  • LChot100--128. 最长连续序列
  • 前缀和-238-除自身以外数组的乘积-力扣(LeetCode)
  • 基于深度学习的图像分类:使用Inception-v3实现高效分类
  • FastAPI入门:demo、路径参数、查询参数
  • GPU运维常见问题处理
  • Vibe Coding | 技术让我们回归了创造的本质
  • 基于深度学习的图像分类:使用Capsule Networks实现高效分类
  • 【HTML】<script>元素中的 defer 和 async 属性详解
  • 前端开发 Vue 结合Sentry 实现性能监控