我运行的是内核为 2.6.35-ec2 的 Arch Linux。我安装并运行了最新版本的 VSFTPD。以下是它的日志文件:
anonymous_enable=YES
local_enable=YES
write_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
这不是我的最终配置,但这是我为了让它能够工作而缩减的配置。
该服务器位于 Amazon EC2 上,端口 20 和 21 已开放。没有启用其他防火墙。
我尝试在 OSX 上连接 和/usr/bin/ftp
客户Transmit
端。前者挂起很长时间并最终显示连接超时。后者仅用了大约十秒钟就显示连接超时。我尝试指定端口 20 和 21。
任何正常的 Arch Linux 日志文件(例如 auth.log 和 everything.log)中都没有任何内容。/var/log/vsftpd.log
甚至不存在。
有人能帮我弄清楚从哪里开始吗?Arch Linux wiki 和我读过的其他资料都表明这是一个事实上的标准轻量级 FTP 服务器。
答案1
在看到其他回复和评论后,这可能是因为 vsftp 不想以 root 身份运行(因为它是非常安全的 ftp,:-))。
我记得它想以用户 ftp 的身份运行(或者这就是我记得的设置方式)。
答案2
FTP 模式有两种 - 端口模式和被动模式。两者的区别在于服务器如何尝试建立数据连接(初始连接是命令连接,您通过该连接将命令发送到服务器,而数据连接是用于传输文件的辅助连接)。
端口模式服务器将尝试连接到客户. 因此这是一个传入连接从服务器到客户端。为了实现此功能,您需要在客户端打开端口 20,并转发到 ftp 会话的发起者。这在非企业对企业的环境中通常是不可行的。
被动模式是指服务器除了端口 21 之外还向自身开放一个辅助端口。此端口在会话的传输部分进行协商,并指示客户端连接到 1024 以上的端口以下载或上传数据。此模式更适合 NAT 设备介于其间的客户端服务器事务。
为了实现这一点,保护服务器的防火墙必须允许被动端口上的连接。许多防火墙都支持 ftp,因此会观察协商端口并允许连接。但是,这并不总是可行的,因此必须手动打开范围。
设置此功能的最佳方法是在 vsftpd 配置中定义端口范围:
pasv_min_port = 31000
pasv_max_port = 32000
然后,您可以打开防火墙配置中定义的范围,并指示您的 ftp 客户端使用被动模式。这可以通过pasv
某些命令行客户端的命令或 GUI 客户端的服务器设置来完成。
/etc/hosts.allow|deny
这两个文件提供了对哪些内容可以连接到服务器的总体控制。请确保它们都存在,并且hosts.deny
其中不应包含任何拒绝语句。