You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过Node.js与FTP连接Ubuntu 22服务器,需排查哪些内容?

FTP连接被拒绝(ECONNREFUSED)的排查方案

问题场景

使用Node.js的basic-ftp库尝试连接Ubuntu 22服务器传输文件时,返回错误:

Error: connect ECONNREFUSED XXX:21
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1495:16) {
  errno: -4078,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: 'XXX',
  port: 21
}

且服务器/var/log/auth.log中无相关记录。

原因分析

ECONNREFUSED表示客户端无法与服务器的21端口建立TCP连接,连接请求根本没到达认证环节,因此auth.log不会生成相关日志是正常现象。

排查步骤

1. 检查服务器是否安装FTP服务

Ubuntu常用的FTP服务是vsftpd,执行以下命令确认是否安装:

dpkg -l | grep vsftpd

如果无输出,说明未安装,执行以下命令安装:

apt update && apt install vsftpd -y

2. 确认FTP服务是否正常运行

检查服务状态:

systemctl status vsftpd

如果显示active (running)则正常;若未运行,启动服务并设置开机自启:

systemctl start vsftpd
systemctl enable vsftpd

3. 检查防火墙是否开放21端口

Ubuntu 22默认使用ufw防火墙,查看当前规则:

ufw status

若未看到21/tcp的允许规则,添加并重载防火墙:

ufw allow 21/tcp
ufw reload

4. 测试端口连通性

在客户端机器上执行以下命令,验证服务器21端口是否可访问:

nc -zv XXX 21

如果输出succeeded!说明端口正常;若仍显示拒绝,需检查服务器是否有其他安全组/网络ACL限制(比如云服务器的安全组规则)。

5. 检查FTP服务配置(可选,前面步骤解决后仍有问题时)

编辑vsftpd配置文件:

nano /etc/vsftpd.conf

确认以下配置项:

  • local_enable=YES:允许本地用户登录
  • write_enable=YES:允许写入操作
  • 若使用root用户登录,检查userlist_deny=YES时,/etc/vsftpd.user_list或/etc/vsftpd.ftpusers中是否包含root,若有则移除(不建议用root登录FTP,推荐创建专用FTP用户)

修改后重启服务:

systemctl restart vsftpd

内容的提问来源于stack exchange,提问作者aa bb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:00:00