filezilla出现connected refused的时候排查问题

问题描述:

系统是ubuntu20.04,使用filezilla,两个主机之间能够ping通,但是filezilla使用sftp连接的时候显示的是

复制代码
FATAL ERROR: Connection refused
Could connect to the server

应该如何排查问题呢

这是一个非常典型的SFTP连接问题。"Connection refused" (连接被拒绝) 是一个非常明确的错误信息,它和"Connection timed out"(连接超时) 或 "Host unreachable"(主机不可达) 是完全不同的。

"Connection refused"的核心含义是:你的FileZilla客户端发出的连接请求已经成功到达了服务器的IP地址,但是服务器操作系统主动拒绝了这个连接。

既然ping是通的,说明网络底层是连通的。问题出在应用层,也就是SSH服务本身。

请按照以下步骤,从最可能的原因开始逐一排查服务器(也就是你希望连接上的那台Ubuntu主机)。


排查步骤

第一步:检查服务器上的SSH服务是否已安装并正在运行

这是最常见的原因,尤其是在一个新安装的Ubuntu桌面系统上,SSH服务默认可能没有安装。

  1. 登录到你的Ubuntu服务器 (通过物理键盘、VNC、或者其他已经可以连接的方式)。

  2. 检查SSH服务的状态,在终端中输入以下命令:

    bash 复制代码
    sudo systemctl status sshd

    或者有时候服务名叫 ssh

    bash 复制代码
    sudo systemctl status ssh
  3. 分析命令输出:

    • 正常情况(服务正在运行) :你会看到绿色的 active (running) 字样。

    • 如果服务正在运行,请直接跳到 第二步

    • 异常情况1(服务未运行) :你可能会看到 inactive (dead)
      解决方法:启动SSH服务,并设置为开机自启。

      bash 复制代码
      sudo systemctl start ssh
      sudo systemctl enable ssh

      然后再试一次FileZilla连接。

    • 异常情况2(服务未安装) :你可能会看到 Unit ssh.service could not be found. 或类似的错误。
      解决方法 :安装openssh-server

      bash 复制代码
      sudo apt update
      sudo apt install openssh-server

      安装完成后,SSH服务通常会自动启动。你可以用第一条 systemctl status ssh 命令再次检查。

第二步:检查服务器防火墙设置

如果SSH服务正在运行,但连接依然被拒绝,第二大可能性就是防火墙。Ubuntu默认使用 ufw (Uncomplicated Firewall)。

  1. 检查防火墙状态:

    bash 复制代码
    sudo ufw status
  2. 分析命令输出:

    • 如果输出是 Status: inactive :说明防火墙未开启,这不是问题的原因,请跳到 第三步

    • 如果输出是 Status: active:你需要检查规则列表,看看是否允许了SSH连接(默认端口22)。

      复制代码
      Status: active
      
      To                         Action      From
      --                         ------      ----
      22/tcp                     ALLOW       Anywhere   <-- 需要看到类似这行
      OpenSSH                    ALLOW       Anywhere   <-- 或者这行
      22/tcp (v6)                ALLOW       Anywhere (v6)
      OpenSSH (v6)               ALLOW       Anywhere (v6)

      解决方法 :如果列表中没有允许 22/tcpOpenSSH 的规则,请添加它:

      bash 复制代码
      sudo ufw allow ssh 

      或者,如果你知道SSH使用的是标准端口22:

      bash 复制代码
      sudo ufw allow 22/tcp

      添加规则后,无需 reloadrestart ufw。现在再试一次FileZilla连接。

第三步:确认SSH服务的监听端口

虽然不常见,但有些服务器为了安全会修改SSH的默认端口(从22修改为其他端口)。

  1. 检查SSH正在监听的端口:

    bash 复制代码
    sudo ss -tlpn | grep sshd
    • ss 是一个现代的网络套接字查看工具,比 netstat 更快。
  2. 分析命令输出:

    复制代码
    LISTEN  0        128              0.0.0.0:22              0.0.0.0:*      users:(("sshd",pid=1234,fd=3))
    LISTEN  0        128                 [::]:22                 [::]:*      users:(("sshd",pid=1234,fd=4))
    • 请注意 LISTEN 状态后面跟着的地址和端口。0.0.0.0:22 表示在所有IPv4地址的22端口上监听。
    • 如果这里显示的端口不是22 (例如是 2222),那么你在FileZilla连接时,必须在"端口§"字段明确填写这个新的端口号
  3. 如果需要修改端口 :可以编辑SSH配置文件 sudo nano /etc/ssh/sshd_config,找到 Port 22 这一行,修改为你想要的端口,然后重启SSH服务 sudo systemctl restart ssh。同时别忘了在防火墙里允许新端口。

第四步:检查客户端(FileZilla)的设置

回到你自己的电脑上,检查FileZilla的设置是否正确。

  1. 协议(Protocol) :确保主机名前缀是 sftp://,例如 sftp://192.168.1.100千万不要错选成 ftp://。SFTP (SSH File Transfer Protocol) 和 FTP 是完全不同的协议。
  2. 主机(Host):确认服务器的IP地址或域名输入正确。
  3. 端口(Port)
    • 如果服务器使用标准端口22,此项可以留空
    • 如果服务器使用了非标准端口(如第三步中查到的),必须在此处填写正确的端口号
  4. 用户名(Username)/密码(Password):确保你使用的是服务器上一个真实存在的用户的凭据。
第五步:使用命令行工具进行最终测试

为了排除是FileZilla本身的问题,可以在你的客户端电脑的终端(如果是Windows,可以使用CMD或PowerShell)上使用原生的sftp命令进行测试。

  1. 打开你电脑的终端。

  2. 输入命令:

    bash 复制代码
    # 如果服务器是标准22端口
    sftp your_username@server_ip_address
    
    # 如果服务器是自定义端口,例如2222
    sftp -P 2222 your_username@server_ip_address
    • your_usernameserver_ip_address 替换为你的实际信息。
    • 注意:sftp命令用大写的 -P 指定端口,而 ssh 命令用小写的 -p
  3. 观察结果:

    • 如果命令行也返回 Connection refused,那么问题100%在服务器端,请重新仔细检查第一、二、三步。
    • 如果命令行能够成功连接(会提示你输入密码),但FileZilla不行,那问题就在FileZilla的配置上,请仔细检查第四步。

总结排查流程

  1. 服务器 :SSH服务装了吗?sudo apt install openssh-server
  2. 服务器 :SSH服务运行了吗?sudo systemctl status ssh -> 不行就 sudo systemctl start ssh
  3. 服务器 :防火墙挡了吗?sudo ufw status -> 如果active,就 sudo ufw allow ssh
  4. 服务器 :端口对吗?sudo ss -tlpn | grep sshd -> 确认端口号
  5. 客户端 :FileZilla里协议、主机、端口、用户名填对了吗?特别是sftp://协议和端口号。

按照这个顺序排查,基本上都能解决"Connection refused"的问题。

相关推荐
欧云服务器5 天前
怎么让脚本命令可以同时在centos、debian、ubuntu执行?
ubuntu·centos·debian
智渊AI5 天前
Ubuntu 20.04/22.04 下通过 NVM 安装 Node.js 22(LTS 稳定版)
ubuntu·node.js·vim
The️5 天前
Linux驱动开发之Read_Write函数
linux·运维·服务器·驱动开发·ubuntu·交互
再战300年5 天前
Samba在ubuntu上安装部署
linux·运维·ubuntu
qwfys2005 天前
How to install golang 1.26.0 to Ubuntu 24.04
ubuntu·golang·install
木尧大兄弟5 天前
Ubuntu 系统安装 OpenClaw 并接入飞书记录
linux·ubuntu·飞书·openclaw
小虾爬滑丫爬5 天前
ubuntu上设置Tomcat 开机启动
ubuntu·tomcat·开机启动
老师用之于民5 天前
【DAY25】线程与进程通信:共享内存、同步机制及实现方案
linux·c语言·ubuntu·visual studio code
小虾爬滑丫爬5 天前
Ubuntu 上设置防火墙
ubuntu·防火墙
林开落L5 天前
解决云服务器内存不足:2 分钟搞定 Ubuntu swap 交换区配置(新手友好版)
运维·服务器·ubuntu·swap交换区