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"的问题。

相关推荐
blasit1 小时前
Ubuntu 20.04.6交叉编译得到Ubuntu 16.04.6的可执行文件
linux·运维·ubuntu
满目8284 小时前
【Ubuntu系统实战】一站式部署与管理MySQL、MongoDB、Redis三大数据库
数据库·redis·mysql·mongodb·ubuntu·数据库布置
软件测试大叔8 小时前
ubuntu替换源为阿里源(修改ubuntu.source文件)
linux·运维·ubuntu
政安晨20 小时前
Ubuntu 服务器无法 ping 通网站域名的问题解决备忘 ——通常与网络配置有关(DNS解析)
linux·运维·服务器·ubuntu·ping·esp32编译服务器·dns域名解析
程序员 _孜然3 天前
Ubuntu/Debian修改网卡名字enP3p49s0为eth0
linux·运维·驱动开发·嵌入式硬件·ubuntu·debian
可期不折腾3 天前
NVIDIA Nsight Systems性能分析工具
ubuntu·nvidia·nsight systems·性能分析工具
Fireworkitte3 天前
Ubuntu 系统 tar 包源码安装 Nginx
linux·nginx·ubuntu
ElendaLee3 天前
笔记本电脑Windows+Ubuntu 双系统,Ubuntu无法挂载Windows的硬盘 报错问题解决
linux·运维·ubuntu
QtSeeker3 天前
Ubuntu22.04安装VMware Tools
linux·ubuntu
wzb563 天前
Ubuntu 的 apt-get 强制使用 IPv4 网络
ubuntu