谷桐羽 2025-05-16 02:55 采纳率: 98.9%
浏览 78
已采纳

Ubuntu远程SSH连接被拒绝,常见原因及解决方法?

在Ubuntu系统中,远程SSH连接被拒绝是一个常见的问题。首先,确保SSH服务已安装并正在运行,可使用`sudo systemctl status ssh`检查状态。如果未启动,用`sudo systemctl start ssh`启动服务。 其次,防火墙可能阻止了SSH连接。确认端口22是否开放,使用`sudo ufw allow 22`允许SSH流量。此外,检查IP地址和端口号是否正确,有时服务器配置为非标准端口。 再者,SSH配置文件`/etc/ssh/sshd_config`可能出现错误设置,如禁止root登录或密钥认证问题。修改后记得重启SSH服务:`sudo systemctl restart ssh`。 最后,网络问题也可能导致连接失败,确保服务器能被正常访问且没有网络设备限制SSH连接。通过逐一排查上述可能性,通常可以解决Ubuntu远程SSH连接被拒绝的问题。
  • 写回答

1条回答 默认 最新

  • 杨良枝 2025-05-16 02:55
    关注

    1. 初步检查:SSH服务状态

    在Ubuntu系统中,远程SSH连接被拒绝是一个常见的问题。首先需要确认SSH服务是否已正确安装并运行。

    • 使用命令 `sudo systemctl status ssh` 检查SSH服务的状态。
    • 如果服务未启动,可以通过 `sudo systemctl start ssh` 启动服务。
    • 确保SSH服务设置为开机自启,使用命令 `sudo systemctl enable ssh`。

    以下是检查SSH服务状态的示例代码:

    
    $ sudo systemctl status ssh
    ● ssh.service - OpenBSD Secure Shell server
       Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
       Active: active (running) since Mon 2023-01-01 12:00:00 UTC; 1 day ago
    

    2. 防火墙配置检查

    防火墙可能阻止了SSH连接,因此需要确认端口22是否开放。

    1. 使用命令 `sudo ufw allow 22` 允许SSH流量。
    2. 验证防火墙规则是否生效,执行 `sudo ufw status`。
    3. 如果服务器配置为非标准端口(如2222),则需要允许对应端口。
    步骤命令
    允许SSH端口sudo ufw allow 22
    检查防火墙状态sudo ufw status

    3. SSH配置文件分析

    SSH配置文件 `/etc/ssh/sshd_config` 可能存在错误设置,例如禁止root登录或密钥认证问题。

    以下是一些常见配置项及其调整方法:

    • `PermitRootLogin`:若设置为 `no`,则无法以root用户登录。可将其改为 `yes` 或 `prohibit-password`。
    • `PasswordAuthentication`:若设置为 `no`,则仅支持密钥认证。需确保客户端配置了正确的私钥。
    • `Port`:若配置了非标准端口,则需要在客户端指定对应端口号。

    修改配置文件后,重启SSH服务以应用更改:

    
    $ sudo systemctl restart ssh
    

    4. 网络连通性排查

    网络问题也可能导致SSH连接失败,因此需要确保服务器能够正常访问且没有网络设备限制SSH连接。

    以下是排查网络问题的流程图:

    graph TD
        A[检查服务器IP地址] --> B{是否可以Ping通}
        B --否--> C[检查路由器/NAT设置]
        B --是--> D[确认SSH端口是否开放]
        D --否--> E[联系网络管理员]
        D --是--> F[尝试SSH连接]
    

    通过上述流程逐步排查网络问题,可以定位到具体的故障点。

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

报告相同问题?

问题事件

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