当前位置: 代码网 > 服务器>服务器>云虚拟主机 > 使用Docker搭建Vsftpd 的 FTP 服务的详细过程

使用Docker搭建Vsftpd 的 FTP 服务的详细过程

2024年05月21日 云虚拟主机 我要评论
ftp 基础 与 使用 docker 搭建 vsftpd 的 ftp 服务前言最近的工作中,需要将手机上的文件发送到公司的 ftp 的服务器。按照从前的思路,自然是,先将文件传到电脑,再由电脑上传到

ftp 基础 与 使用 docker 搭建 vsftpd 的 ftp 服务

前言

最近的工作中,需要将手机上的文件发送到公司的 ftp 的服务器。按照从前的思路,自然是,先将文件传到电脑,再由电脑上传到 ftp 服务器上;经过一份搜索后找到了 质感文件 这个 android 应用,这样就可以通过无线网直接连接 ftp 服务器了。

ftp 基础ftp 需要两个端口,一个是数据端口,一个是控制端口。在主动模式下,控制端口一般为21,数据端口一般为20(控制端口 - 1);在被动模式下,由服务器端和客户端协商决定。ftp 地址为:ftp://用户名:密码@ip地址或域名:控制端口号ftp 的传输方式有两种:
(1)ascii传输方式,即假定用户正在拷贝的文件包含简单的ascii码文本,通常传输时会自动调整格式
(2)二进制传输模式,即逐位传输ftp 的工作模式有两种:
(1)port主动模式,意为服务端主动从20端口连接客户端告知的端口
(2)pasv被动模式,意为服务端 告知 客户端 地址和端口后,等待客户端连接
(3)对比:主动模式需要客户端必须开放端口给服务器,服务器要可以连上客户端,这就要求客户端为公网 ip(经过 nat 后地址就变化了)且防火墙打开。而实际情况下,公网 ip 比较少而且很多客户端都是在防火墙内,由路由器交换机进行着 nat,还要协调开放端口。被动模式只需要服务器端开放端口给客户端连接就行了,而服务器为了便于访问,一般会放在公网,所以被动模式使用较多。主动被动模式选择权在客户端

此处比较奇怪,为什么服务器会告知客户端地址,直接让客户端使用访问服务器时的地址不可以吗?我的思考是,机器一般无法取得自己外网的地址,而且 ftp 协议中确有要求,要传输地址:

(图为 filezilla 中被动模式传输文件)

这里可能就会好奇了,前面的地址好理解,后面的两个数字是什么意思。通过这篇文章得知,端口号为数字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 含义

到此这篇关于使用 docker 搭建 vsftpd 的 ftp 服务 的文章就介绍到这了,更多相关docker 搭建 vsftpd ftp 服务 内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com