apt-get install vsftpd
然后在配置文件中/etc/vsftpd.conf
取消注释行local_umask=022
和write_enable=YES
,并在末尾添加:Run Code Online (Sandbox Code Playgroud)lock_upload_files=NO chroot_local_user=YES force_dot_files=YES
并更改以下内容(随意将 8745 更改为您喜欢的端口):
Run Code Online (Sandbox Code Playgroud)pasv_enable=YES pasv_min_port=8745 pasv_max_port=8745
pasv_min_port
设置为与 vsftpd 中相同的端口有什么影响pasv_max_port
?例如,它对性能有影响吗?
TL; DR:影响是您的 FTP 服务器一次仅支持 1 次传输。对于旨在为并发客户端提供服务的 FTP 服务器来说,这绝对是一个禁忌。对于一次仅由一个人使用的私有 FTP 服务器来说可能没问题,只要该人愿意不允许同时进行多个传输即可。
FTP 协议(无论使用什么服务器软件,无论是它vsftpd
还是其他)以双通道方式工作。
第一个通道绑定到众所周知的端口 21,充当“控制通道”。该通道用于向服务器发送请求并接收服务器的回复。请求属于命令类型,例如“列出此目录”或“发送此文件”或“告诉我您支持的功能”等。回复属于与状态条件和简短、文本、易于解析的答案相关的类型。
第二个通道用于批量传输,例如构成发送或接收的文件的实际数据流,或构成目录列表的数据流。在最典型的使用场景中,这样的第二通道是按需建立的并且仅持续一次操作,即传输的每个单个文件(或目录列表)在客户端和服务器之间从头开始建立新的通道(TCP连接)。第一个通道(端口 21 上的通道)始终保持打开状态以用于控制目的。
在 FTP 被动模式下,服务器使用被动端口来选择一个端口进行侦听,同时等待来自请求文件传输/目录列表的客户端的临时第二通道(TCP 连接)。因为第二通道不承载任何认证/标识,也不承载任何类型的“cookie”,所以服务器只能在它所选择的端口和所请求的特定操作之间建立关联。也就是说:每个第二通道都紧密绑定到特定客户端请求的精确文件或特定目录。
因此,如果您只为服务器提供一个端口来选择第二个通道,则服务器一次只能支持一个“批量传输”。当前有多少客户端连接到端口 21 上的“控制通道”并不重要:在任何给定时刻,只有其中一个客户端会传输文件或列出目录,而在同一时刻请求传输的其他客户端将而是从服务器接收通知临时错误的回复。
换句话说,仅使用一个被动端口本质上就像一把大的互斥锁,用于坚持使用同一 FTP 服务器的 FTP 传输。
归档时间: |
|
查看次数: |
2105 次 |
最近记录: |