如何找出 FTP 不工作的原因?

Sin*_*rMJ 2 ftp

我尝试在上网本上设置 FTP 服务器,但无法连接到它。现在我想知道我怎么能弄清楚我做错了什么。

我有一个 Apache2 服务器在其上运行以与域 (domain.dnsdynamics.com) 一起使用,我可以连接到该服务器。// 编辑:我可以访问http://domain.com,但不能访问 ftp://domain.com

我可以采取哪些步骤来找出问题所在?

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

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

我尝试通过 Internet 和 LAN 进行连接。

我已经通过 Chrome 和 FileZilla 进行了测试,都没有回应。(FileZilla 超时,Chrome 找不到页面)。转到 http:// 作品,ftp:// 不

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

Edit3:(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
Run Code Online (Sandbox Code Playgroud)

Kia*_*ian 5

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

sudo systemctl status vsftpd.service
Run Code Online (Sandbox Code Playgroud)

如果不是: sudo systemctl start vsftpd.service

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

ftp 127.0.0.1
[YOUR_USERNAME]
[YOUR_PASSWORD]
Run Code Online (Sandbox Code Playgroud)

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

主动模式

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

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

被动模式

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

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

主动模式与被动模式

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

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

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

ftp [YOUR_FTP_SERVER_IP]
passive
Run Code Online (Sandbox Code Playgroud)

通过这样做,被动标志将被设置为false并且数据通道将使用主动模式(如果你再次这样做,它会将其设置回true)。(来源:https : //www.tutorialspoint.com/unix_commands/pftp.htm https://serverfault.com/questions/152245/how-to-disable-passive-mode-in-linux-ftp-command

我希望我的解释不会太混乱......

  • 这是很棒的信息!您能否还解释一下命令行应用程序如何切换到活动模式? (2认同)