普通网友 2025-07-28 05:55 采纳率: 98.8%
浏览 3
已采纳

SSH连接Ubuntu时出现"Connection refused"错误如何解决?

在通过SSH连接Ubuntu服务器时,出现“Connection refused”错误通常表明SSH服务未正常运行或网络配置存在问题。常见原因包括:SSH服务未启动、防火墙阻止连接、SSH端口被更改或网络连接问题。解决方法包括:检查Ubuntu系统上的SSH服务状态(使用`systemctl status ssh`命令),确认防火墙(如UFW)是否放行SSH端口,验证SSH配置文件(/etc/ssh/sshd_config)中的监听端口,并确保客户端使用的IP地址和端口正确。此外,检查网络连接和路由是否正常,也可尝试重启SSH服务(`sudo systemctl restart ssh`)以修复临时故障。
  • 写回答

1条回答 默认 最新

  • 请闭眼沉思 2025-07-28 05:55
    关注

    一、SSH连接Ubuntu服务器时出现“Connection refused”错误的分析与解决

    在Linux系统运维中,SSH(Secure Shell)是远程管理服务器最常用的方式之一。然而,当尝试通过SSH连接Ubuntu服务器时,有时会遇到“Connection refused”错误。该错误通常表明SSH服务未运行、网络配置异常,或存在防火墙限制等问题。本文将从浅入深、由表及里地分析该问题的成因、排查流程以及解决方案。

    1.1 常见原因分析

    “Connection refused”错误可能由以下几个主要原因导致:

    • SSH服务未启动:系统中的OpenSSH服务没有运行。
    • 防火墙阻止连接:UFW、iptables等防火墙规则阻止了SSH端口访问。
    • SSH端口被更改:默认的22端口被修改,客户端未使用正确的端口。
    • 网络连接问题:IP地址配置错误、路由不通、或DNS解析失败。
    • SSH服务配置错误:如配置文件/etc/ssh/sshd_config中监听地址或端口设置错误。

    1.2 故障排查流程

    为了系统性地定位问题,建议按照以下流程进行排查:

    graph TD A[开始] --> B{能否Ping通服务器IP?} B -->|否| C[检查网络连接或DNS配置] B -->|是| D{能否Telnet目标SSH端口?} D -->|否| E[检查防火墙配置] D -->|是| F{SSH服务是否运行?} F -->|否| G[启动SSH服务] F -->|是| H{SSH配置是否正确?} H -->|否| I[修改/etc/ssh/sshd_config] H -->|是| J[尝试连接]

    1.3 解决方法详解

    1. 检查SSH服务状态
      sudo systemctl status ssh
      如果服务未运行,可使用以下命令启动:
      sudo systemctl start ssh
    2. 确认SSH服务开机自启
      sudo systemctl enable ssh
    3. 检查防火墙规则(UFW)
      sudo ufw status
      如果未放行SSH端口(如22),可使用以下命令:
      sudo ufw allow 22/tcp
    4. 验证SSH监听端口: 查看/etc/ssh/sshd_config文件中的Port字段,确认是否与客户端使用的端口一致。
    5. 重启SSH服务
      sudo systemctl restart ssh
      用于解决临时配置错误或服务异常。
    6. 检查网络连接: 使用pingtraceroute命令测试网络可达性。
    7. 使用telnet测试端口连通性
      telnet your_server_ip 22
      若无法连接,说明端口被阻断。
    8. 查看SSH日志
      sudo tail -f /var/log/auth.log
      可观察连接尝试和认证失败信息。

    1.4 进阶排查建议

    对于资深IT从业者,还可考虑以下高级排查方向:

    排查项说明命令/操作
    SELinux/AppArmor安全模块可能阻止SSH服务绑定端口检查日志或临时禁用模块
    IPtables规则可能覆盖UFW规则iptables -L -n
    多网卡配置SSH监听的IP是否与客户端连接的网卡匹配查看sshd_configListenAddress字段
    SSH服务崩溃服务异常退出使用journalctl -u ssh查看崩溃日志
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 7月28日