我尝试在上网本上设置 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客户端中,您可以切换到主动模式:
该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)
我希望我的解释不会太令人困惑...