如何查明 FTP 无法正常工作的原因?

如何查明 FTP 无法正常工作的原因?

我尝试在上网本上设置 FTP 服务器,但无法连接。现在我想知道如何找出我做错了什么。

我有一个 Apache2 服务器在其上运行,用于域 (domain.dnsdynamics.com),我可以连接到该服务器。// 编辑:我可以转到http://域名.com, 但不是ftp://域名.com

我该采取什么步骤来查明出了什么问题?

编辑:网络通过 D-Link DIR-615 路由器连接,转发端口为 20 和 21,均通过静态 IP 转发到我的上网本。

上网本上没有安装防火墙。

我已尝试通过互联网和局域网进行连接。

我已经通过 Chrome 和 FileZilla 进行了测试,两者都表示没有响应。(FileZilla 超时,Chrome 未找到页面)。转到 http:// 有效,ftp:// 无效

编辑2:我一直在尝试vsftpd,这似乎是Ubuntu的默认FTP服务器

编辑3:(vsftpd.conf无评论)。默认版本,到目前为止我还没有对其进行任何更改。

listen=YES  
local_enable=YES  
dirmessage_enable=YES  
allow_writeable_chroot=YES  
use_localtime=YES  
xferlog_enable=YES  
connect_from_port_20=YES  
chroot_local_user=YES  
chroot_list_enable=YES  
secure_chroot_dir=/var/run/vsftpd/empty  
rsa_cert_file=/etc/ssl/private/vsftpd.pem

答案1

首先,使用以下命令确保 vsftpd 服务正在运行:

sudo systemctl status vsftpd.service

如果不是:sudo systemctl start vsftpd.service

接下来,您需要确保您可以使用服务器本身(使用环回)连接到您的 ftp:

ftp 127.0.0.1
[YOUR_USERNAME]
[YOUR_PASSWORD]

如果你的用户已经登录,说明问题不是来自 vsftpd 服务本身。我猜可能是因为 FTP 连接模式。FTP 有两种连接模式:主动模式和被动模式。下面简单介绍一下这两种模式:

主动模式

1. 客户端连接到端口 21服务器(命令通道)

2. 服务器连接 FROM端口 20到客户端指定的端口(DATA)

被动模式

1. 客户端连接到端口 21服务器(命令通道)

2. 客户端从随机端口连接到一个港口由服务器指定(DATA)

主动模式与被动模式

默认情况下,FTP 客户端应用程序使用被动模式,因为它更“安全”。因此,在此模式下,端口 20(数据通道)的端口转发已过时,因为外部客户端(Internet)正在尝试连接到数据通道的另一个端口。因此,您需要切换到主动模式,以便数据通道连接由服务器(使用端口 20 发送)而不是客户端完成。

如下图所示,在FileZilla客户端中,您可以切换到主动模式: FileZilla 主动模式

ftp命令默认也使用被动模式。要强制进入主动模式,您需要执行以下操作:

ftp [YOUR_FTP_SERVER_IP]
passive

这样,被动标志将设置为错误的数据通道将使用主动模式(如果你再次执行此操作,它将设置回真的)(资料来源:https://www.tutorialspoint.com/unix_commands/pftp.htm https://serverfault.com/questions/152245/how-to-disable-passive-mode-in-linux-ftp-command

我希望我的解释不会太令人困惑...

相关内容