普通网友 2025-06-06 08:50 采纳率: 98.5%
浏览 119
已采纳

Ubuntu开启SSH后无法连接,提示“Connection refused”,如何解决?

在Ubuntu系统中开启SSH服务后,若尝试连接时出现“Connection refused”提示,通常与以下几个常见问题有关:1) SSH服务未正常启动或安装不完整;2) 防火墙规则阻止了SSH端口(默认22)的访问;3) 网络配置错误,导致目标IP地址不可达;4) SSH配置文件存在错误或被修改。 解决步骤如下:首先确认SSH服务已安装并运行,执行`sudo systemctl status ssh`检查状态,若未启动则使用`sudo systemctl start ssh`启动。其次,确保防火墙允许SSH连接,运行`sudo ufw allow 22/tcp`开放端口。接着,验证网络连通性,使用`ping`命令测试目标IP是否可达。最后,检查SSH配置文件`/etc/ssh/sshd_config`是否有误,重点查看监听端口及权限设置,并重启SSH服务以应用更改:`sudo systemctl restart ssh`。通过以上步骤,大多数“Connection refused”问题可得到有效解决。
  • 写回答

1条回答 默认 最新

  • 扶余城里小老二 2025-06-06 08:51
    关注

    1. 初步了解问题

    在Ubuntu系统中开启SSH服务后,如果尝试连接时出现“Connection refused”提示,通常意味着客户端无法与服务器建立通信。这种错误可能由多种原因引起,例如SSH服务未正常启动、防火墙阻止访问、网络配置错误或SSH配置文件存在问题。

    • SSH服务未正常启动或安装不完整: 如果SSH服务没有正确安装或运行,客户端将无法连接到目标端口。
    • 防火墙规则阻止了SSH端口(默认22)的访问: 防火墙可能会限制对特定端口的访问,导致连接失败。
    • 网络配置错误,导致目标IP地址不可达: 网络问题如路由错误或IP冲突可能导致服务器无法被访问。
    • SSH配置文件存在错误或被修改: 配置文件中的错误设置会阻止SSH服务正常工作。

    2. 逐步排查问题

    以下是解决“Connection refused”问题的步骤,按照逻辑顺序逐一排查:

    1. 确认SSH服务已安装并运行:
      使用命令`sudo systemctl status ssh`检查SSH服务状态。如果服务未启动,使用`sudo systemctl start ssh`来启动服务。
    2. 确保防火墙允许SSH连接:
      执行`sudo ufw allow 22/tcp`开放SSH端口(默认为22)。若使用其他端口,请替换相应数字。
    3. 验证网络连通性:
      使用`ping`命令测试目标IP是否可达。例如:`ping 192.168.1.100`。
    4. 检查SSH配置文件:
      编辑`/etc/ssh/sshd_config`文件,重点查看监听端口及权限设置。完成后重启SSH服务以应用更改:`sudo systemctl restart ssh`。

    3. 技术分析与解决方案

    以下是针对每个常见问题的具体技术分析和解决方法:

    问题类型分析过程解决方案
    SSH服务未正常启动通过`systemctl status ssh`检查服务状态,确认是否处于active(running)状态。若服务未启动,执行`sudo systemctl start ssh`;若服务缺失,使用`sudo apt install openssh-server`重新安装。
    防火墙阻止访问检查防火墙规则,确认是否允许SSH端口(默认22)的流量。运行`sudo ufw allow 22/tcp`开放端口,或者调整具体规则以满足需求。
    网络配置错误使用`ping`命令测试目标IP的可达性,同时检查路由表和DNS解析。修复网络配置,例如修正IP地址冲突或更新路由信息。
    SSH配置文件错误检查`/etc/ssh/sshd_config`文件,确认监听端口、权限设置等参数是否正确。修复配置文件后,执行`sudo systemctl restart ssh`以应用更改。

    4. 流程图总结排查步骤

    graph TD; A[开始] --> B{SSH服务是否运行?}; B --否--> C{是否安装SSH服务?}; C --否--> D[安装SSH服务]; C --是--> E[启动SSH服务]; B --是--> F{防火墙是否允许SSH端口?}; F --否--> G[开放SSH端口]; F --是--> H{网络是否连通?}; H --否--> I[检查网络配置]; H --是--> J{SSH配置文件是否正确?}; J --否--> K[修复SSH配置文件]; J --是--> L[完成];

    以上步骤可以帮助用户系统地定位并解决问题,确保SSH服务能够正常工作。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

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