解决 FinalShell 无法连接 Ubuntu (Ping 正常) 的终极排查指南

发布于:2025-09-06 ⋅ 阅读:(19) ⋅ 点赞:(0)

问题描述:
ping <ubuntu_ip> 正常,但使用 FinalShell/Xshell 等 SSH 客户端连接时,提示“连接超时”或“连接被拒绝”。

根本原因:
ping (ICMP协议) 通,仅代表网络层可达。SSH (TCP 22端口) 不通,是应用层服务或传输层端口问题。


排查流程

在 Ubuntu 终端中,按顺序执行以下检查。

1. 检查 SSH 服务 (openssh-server)

Ubuntu 桌面版默认不安装 SSH 服务。这是首要排查点。

1.1. 检查状态:

sudo systemctl status ssh
  • active (running): 服务正常,跳至第 2 步。
  • inactive (dead): 已安装但未运行。
  • Unit ssh.service not found: 未安装。

1.2. 修复:

  • 如未安装,执行安装:
    sudo apt update
    sudo apt install openssh-server
    
  • 启动并设置开机自启:
    sudo systemctl start ssh
    sudo systemctl enable ssh
    

2. 检查防火墙 (UFW)

防火墙可能拦截了 SSH 的 22 端口。

2.1. 检查状态:

sudo ufw status
  • Status: inactive: 防火墙关闭,跳至第 3 步。
  • Status: active: 防火墙开启,检查规则列表。

2.2. 修复 (若防火墙开启):

  • 查看规则列表,如无 22/tcp ALLOWssh ALLOW 规则,则需放行。
  • 执行放行命令 (推荐):
    sudo ufw allow 22
    
  • 或者,直接关闭防火墙 (仅限安全内网环境):
    sudo ufw disable
    

3. 检查 SSH 监听配置

确认 SSH 服务监听在正确的网络接口上。

3.1. 检查监听地址和端口:

sudo ss -tlpn | grep ssh
  • 正确状态: 监听地址应为 0.0.0.0:22[::]:22,代表监听所有网络接口。
  • 错误状态: 若为 127.0.0.1:22,则表示只监听本机,外部无法访问。

3.2. 修复 (若监听地址错误):

  1. 编辑配置文件:sudo nano /etc/ssh/sshd_config
  2. 找到 ListenAddress 行,用 # 注释掉,或改为 ListenAddress 0.0.0.0
  3. 重启 SSH 服务使之生效:sudo systemctl restart ssh

4. 身份验证:密码问题

当 FinalShell 出现密码输入框,说明连接已建立,仅剩认证。

  • 密码是什么?
    是你登录 Ubuntu 系统的那个用户的密码。例如,你用 chensir 用户连接,就输入 chensir 的登录密码。
    注意: 输入密码时屏幕无任何显示,输入完毕直接回车。

  • 为何 root 用户无法登录?
    Ubuntu 默认禁止 root 用户通过密码远程 SSH 登录。这是安全策略。
    正确实践: 使用普通用户登录,然后通过 su -sudo -i 切换到 root


速查清单

检查项 命令/方法 正常状态
SSH 服务 sudo systemctl status ssh active (running)
防火墙 sudo ufw status inactiveactive 且规则含 22/tcp ALLOW
监听地址 sudo ss -tlpn | grep ssh 0.0.0.0:22[::]:22
认证 FinalShell 密码框 输入 Ubuntu 用户的登录密码

网站公告

今日签到

点亮在社区的每一天
去签到