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

目录
  • FTP 基础 与 使用 Docker 搭建 Vsftpd 的 FTP 服务
    • 前言
    • 使用 Docker 搭建 Vsftpd 的 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)

相关推荐

  • Docker一行命令完成FTP服务搭建的实现

    一行命令 docker run -d \ -v /share:/home/vsftpd \ -p 20:20 \ -p 21:21 \ -p 21100-21110:21100-21110 \ -e FTP_USER=zhaoolee \ -e FTP_PASS=eelooahz \ -e PASV_ADDRESS=47.106.108.135 \ -e PASV_MIN_PORT=21100 \ -e PASV_MAX_PORT=21100 \ --name zhaoolee_vsftpd \

  • docker pure-ftp 搭建ftp服务器的方法

    1.采用docker-compose搭建ftp服务器 docker-compose.yml的内容如下 ftp: image: stilliard/pure-ftpd volumes: - "../wp/app:/home/ftpusers/code" - "./pure-ftpd:/etc/pure-ftpd" ports: - "21:21" - "30000:30000" - "30001:30001"

  • 使用Docker创建FTP服务器的过程解析

    我们先了解一下FTP 文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输 不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证.FTP允许用户以文件操作的方式(如文件的增.删.改.查.传送等)与另一主机相互通信.然而, 用户并不真正登录到自己想要存取的计

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

    目录 FTP 基础 与 使用 Docker 搭建 Vsftpd 的 FTP 服务 前言 使用 Docker 搭建 Vsftpd 的 FTP 服务 后记 参考 FTP 基础 与 使用 Docker 搭建 Vsftpd 的 FTP 服务 前言 最近的工作中,需要将手机上的文件发送到公司的 FTP 的服务器.按照从前的思路,自然是,先将文件传到电脑,再由电脑上传到 FTP 服务器上:经过一份搜索后找到了 质感文件 这个 Android 应用,这样就可以通过无线网直接连接 FTP 服务器了. FTP 基

  • 最新window server 2012搭建FTP服务的详细步骤

    目录 基本概念介绍 FTP文件传输协议 一.安装FTP服务 1.打开服务器管理器 2.默认配置 3.弹出的窗口点击“添加功能”,继续下一步. 4.功能列表中选择“ISS可承载web核心”.下一步. 5.角色服务中勾选FTP服务,如果管理工具中IIS项也最好勾选上,如图. 6.点击安装,等待安装完成. 二.配置ftp服务 7.回到“服务器管理器”,从工具栏选择IIS管理器. 8.在IIS管理器中,右击“网站”,选择“添加FTP站点”. 9.站名随便写,并选择一个物理地址. 10.按图配置,选择无S

  • 阿里云服务器搭建Php+Apache运行环境的详细过程

    1.apache 1.1 安装apache 使用yum命令安装 : yum -y install httpd 执行结果如下: 1.2 开启apache 开启apache: systemctl start httpd 开启启动apache: systemctl enable httpd 执行结果如下: 1.3 验证安装是否成功 在浏览器输入http://(服务器公网ip),如果出现以下页面说明安装成功: 1.4 验证是否能够正常访问 使用vim在/var/www/html下面编辑一个html文件:

  • Docker部署搭建WebDav服务的详细过程

    目录 问题分析 部署 前言 教程 问题分析 最近在用学校机房中的服务器搭建一个文件共享服务,前期使用了宝塔面板一键搭建了 FTP 服务器,使用一切正常.但是最近在使用其观看存储的视频文件时播放体验并不友好,决定更换共享服务. samba 可能由于端口等问题一直未能成功连接,且搭建过程较为复杂.DLNA 使用 minidlna 的搭建异常方便,但是在安卓手机上的 nplayer 和 vlc 不能通过 zerotier 搭建的虚拟局域网搜索到 DLNA 服务.NFS 由于未知原因也未能在 zerot

  • 基于Nginx搭建WebDAV服务的详细过程

    目录 基于Nginx搭建WebDAV服务 搭建与配置 重新安装 Nginx 添加自定义模块 部署 WebDAV 网站服务 应用 title: 基于Nginx搭建WebDAV服务categories:  - [IT,网络,服务]tags:  - WebDAV  - Nginxcomments: truedate: 2022-11-09 17:19:46description: 基于Nginx搭建WebDAV服务 在搭建 Joplin 笔记服务的时候,发现了可以通过 WebDAV 服务来实现云笔记的

  • windows下在vim中搭建c语言开发环境的详细过程

    1 代码格式化 C语言代码的格式化需要使用clang-format,而clang-format被集成在了llvm中,所以需要先安装llvm,点击此处下载 下载之后运行安装文件,将其中的bin目录添加到环境变量path中(需重启电脑使新添加的环境变量生效).例如我安装后的目录为C:\wsr\LLVM\bin,图中的clang-format就是格式化c代码需要的组件 1.1 clang-format初体验 test1.c #include <stdio.h> int main(int argc,

  • 用Python编写简单的gRPC服务的详细过程

    gRPC 是可以在任何环境中运行的现代开源高性能 RPC 框架.它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证.它也适用于分布式计算的最后一英里,以将设备,移动应用程序和浏览器连接到后端服务. 用Python编写简单的gRPC服务 grpc官网python参考:https://www.grpc.io/docs/languages/python/quickstart/ http://grpc.github.io/grpc/python/

  • Docker安装Jenkins-2.249.3-1.1的详细过程

    目录 一.安装Docker 二.拉取Jenkins镜像文件 三.创建挂载目录并授权 四.创建并启动Jenkins容器 五.查看jenkins是否启动成功 六.查看docker容器日志 七.访问Jenkins 八.安装Jenkins 一.安装Docker #1.编写Docker安装脚本 [root@ip-10-0-12-212 ~]# vim Ins_Docker.sh #!/usr/bin/bash # Author:jh # Time:2021-10-09 11:54:22 # Name:In

  • Docker安装部署分布式数据库 OceanBase的详细过程

    目录 前言 ️ 1.什么是OceanBase ️ 2.硬件要求 ️ 3.docker部署OceanBase 3.1 下载ob docker镜像 3.2 创建容器 3.3 obd工具查看集群及启动 3.4 登录ob数据库并创建租户 3.5 登录obmysql tenant并创建数据库及表等 前言 快速的体验 OceanBase 的 自动化部署过程,以及了解 OceanBase 集群安装成功后的目录特点和使用方法 ️ 1.什么是OceanBase OceanBase是由蚂蚁集团完全自主研发的国产原生

随机推荐