FTP 基础 与 使用 Docker 搭建 Vsftpd 的 FTP 服务
FTP 基础 与 使用 Docker 搭建 Vsftpd 的 FTP 服务
前言
最近的工作中,需要将手机上的文件发送到公司的 FTP 的服务器。按照从前的思路,自然是,先将文件传到电脑,再由电脑上传到 FTP 服务器上;经过一份搜索后找到了 质感文件 这个 Android 应用,这样就可以通过无线网直接连接 FTP 服务器了。
FTP 基础
- FTP 需要两个端口,一个是数据端口,一个是控制端口。在主动模式下,控制端口一般为21,数据端口一般为20(控制端口 - 1);在被动模式下,由服务器端和客户端协商决定。
- FTP 地址为:这篇文章得知,端口号为
数字1 * 256 + 数字2,Wireshark 中的截图也印证了这一点: (图为 Wireshark 中捕获的传输接口)使用 Docker 搭建 Vsftpd 的 FTP 服务
我们使用的 Docker 镜像为 fauria/vsftpd。
docker run -d -v /root/ftp:/home/vsftpd \ --p 60020:20 -p 60021:21 -p 61100-61105:61100-61105 \ -e FTP_USER=battor -e FTP_PASS=nihaonihao123123 \ -e PASV_ADDRESS=1.2.3.4 -e PASV_MIN_PORT=61100 -e PASV_MAX_PORT=61105 \ --name vsftpd --restart=always fauria/vsftpd-v 意为将容器中的路径映射到本地文件系统(“冒号”前为 本地文件系统路径,“冒号”后为 容器中的文件系统路径)。
-p 意为将容器的端口号映射到本地,可以看到映射了一个范围的地址,这些端口是被动模式下开放给客户端的,要与后面的 PASV_MIN_PORT (被动模式最小端口) 和 PASV_MAX_PORT (被动模式最大端口) 相对应。
--name 用于指定容器名称。
--restart 意为当 Docker 进程重启时,立刻启动该容器。我们自己部署服务器时,应当尽量避免使用默认端口,以减少被黑客攻击的风险。故此处使用 60020 和 60021,以及 61100 至 61105 端口
此外需要注意的是,PASV_ADDRESS 需要配置为服务器对应的外网地址。否则无法连接:
(图为 质感文件 中连接时的情况)
然鹅在 FileZilla 客户端测试中发现,即使 配置为 127.0.0.1,某些客户端亦可以正常连接,猜测是因为客户端中存在类似的设置:
(图为 FileZilla 客户端的设置)后记
由于 FTP 中的文件较为隐私,在这里就不展示配置成功后的效果了,实际使用起来还是很方便滴。
再次推荐下 质感文件 这个 APP 吧,界面 Material Design 风格,好看好用。支持 FTP 服务器,SFTP 服务器, SMB 服务器,还可作为 FTP 服务器使用。
参考
fauria/vsftpd
227 Entering Passive Mode 含义