FTP和使用Docker搭建FTP服务
FTP和使用Docker搭建FTP服务
FTP
ftp即file transfer protocol文件传输协议,适用于文件传输的一个协议。
ftp有两个channel。
类型 | 作用 | 端口号 |
---|---|---|
command channel | 命令端口,用于接受要执行命令 | 21 |
data channel | 数据端口,用于传输数据 | 20 |
FTP的主动模式和被动模式
ftp是cs结构,客户端连接服务端时可以选择以主动模式连接或者别动模式连接。
主动模式(active mode)
当客户端以主动模式连接客户端时,执行以下步骤,下述提到的随机端口N>1024:
- client随机选择一个端口N发送PORT(ip+N)指令给server的21端口。
- server发送ack给client端的N端口,连接建立。该连接用于命令传输。
- server端的20端口连接client的N+1端口。
- client发送ack给sever端的20端口,连接建立。该连接用于数据传输。
被动模式(passive mode)
当客户端以被动模式连接客户端时,执行以下步骤,下述提到的随机端口N>1024,R>1024:
- client随机选择一个端口N发送PASV(ip+N)指令给server的21端口。
- server选择一个随机端口R发送ack(ip+R)给client端的N端口,连接建立。该连接用于命令传输。
- client端的N+1端口连接sever的R端口。
- server发送ack给client端的N端口,连接建立。该连接用于数据传输。
区别和选择
可以看出来,主动模式下,server端使用20端口用于数据传输。被动模式下,server端使用随机端口进行数据传输。
模式 | client数据端口 | server数据端口 | 主动性 |
---|---|---|---|
主动模式 | 随机 | 20 | server端建立连接 |
被动模式 | 随机 | 随机 | client端建立连接 |
安全问题
由于client端一般都防火墙或者NAT下面,所以在主动模式下server连接client给的一个随机端口很可能被block掉,所以在生产中一般使用passive模式。但是passive模式中server端需要提供一个随机端口给client用于数据传输,这有很大的安全隐患。所有最好指定一个port range。
端口范围的评估
passive模式中需要指定port range,一般来水一两个client使用一个端口。但是有些client会开多个session,例如客户端要上传100个文件,他可能会开5个session去上传文件,这样子就会占用5个server端的端口了,所以要评估用户数和业务场景得出一个port range。
FTPS 和 SFTP
由于ftp在传输文件是没有对传输的内容进行进行加密,内容是plain text,存在安全问题。FTPS和SFTP是安全的文件传输协议。
FTPS(FTP Secure)使用 Secure Sockets Layer (SSL) 或者 Transport Layer Security (TLS) protocols进行加密,除了使用用户密码登录外,还会进行证书校验,总之FTPS是基于FTP的,是FTP的安全版本。
SFTP (SSH File Transfer Protocol) 不同于FTP,是一个基于SSH全新的协议,端口号22。
使用docker部署ftp服务
上docker hub找一个靠谱点的镜像如下,配置一下。需要开启主动和被动模式。
环境变量 | 含义 | |
---|---|---|
FTP_USER | 用户 | |
FTP_PASS | 密码 | |
PASV_ADDRESS | 被动模式中返回客户端的ip | |
PASV_MIN_PORT | 被动模式中随机端口的下限 | |
PASV_MAX_PORT | 被动模式中随机端口的上限 |
docker run -d -v /ftp_data/:/home/vsftpd \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=ftp -e FTP_PASS=metadoc \
-e PASV_ADDRESS=127.0.0.1 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd --restart=always fauria/vsftpd
云部署注意事项
由于云部署存在端口映射,所以被动模式中端口范围要与暴露的端口一致。例如测试云分配给你的端口是30010到30050,那么你选择给ftp server的端口是30010到30020,那么配置上下限时也要对应。
另外主动模式,客户端连接服务端的20端口,但是这个端口又存在映射,所以这种模式不可行。
FTP和使用Docker搭建FTP服务相关推荐
- 使用 Docker 搭建 FTP 服务并设置用户的指定目录上传,下载,删除
** 使用 Docker 搭建 FTP 服务 ** 1.准备一个服务器,安装好docker并且是联网状态. 2.创建用户并有自己的家目录 adduser mqq #mqq是我的用户名称Enter th ...
- 【译文】用Spring Cloud和Docker搭建微服务平台
by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...
- 用Spring Cloud和Docker搭建微服务平台
This blog series will introduce you to some of the foundational concepts of building a microservice- ...
- 【收藏】使用Docker搭建MySQL服务
使用Docker搭建MySQL服务 https://www.cnblogs.com/sablier/p/11605606.html
- docker搭建zabbix服务
docker搭建zabbix服务 zabbix简介 1.本次安装zabbix的镜像版本 2.zabbix组件 2.1 创建子网 2.2 MySQL容器 2.3 zabbix-server-mysql容 ...
- windows系统使用Docker搭建MySQL服务
windows系统使用Docker搭建MySQL服务 文章目录 windows系统使用Docker搭建MySQL服务 前题 一.安装docker 二.建立镜像 三.连接mysql 前题 请先在wind ...
- 15.1-15.3 FTP,使用vsftpd搭建FTP服务
FTP介绍 FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输. FTP的主要作用就是让用户连接一个远程计算机(这 ...
- win7局域网自建ftp服务器,win7系统搭建FTp服务器局域网内传输文件的解决教程
win7系统使用久了,好多网友反馈说win7系统搭建FTp服务器局域网内传输文件的问题,非常不方便.有什么办法可以永久解决win7系统搭建FTp服务器局域网内传输文件的问题,面对win7系统搭建FTp ...
- suse系统搭建ftp服务器,linux suse 搭建ftp服务器
linux suse 搭建ftp服务器 内容精选 换一换 设置HECS登录密码设置Windows云服务器登录密码设置Linux云服务器登录密码登录HECS了解Windows云服务器的登录方式了解Lin ...
最新文章
- MindSpore接口mindspore::api
- Java集合框架的知识总结(1)
- appium学习【二】:用try捕获异常后,用例的执行结果为pass
- 设计模式(二)__装饰设计模式
- python pexpect输出_关于多线程:如何使用pexpect获取python中子进程的自发输出
- 深度学习模型的前馈运算与反馈运算
- LeetCode 300最长递增子序列
- 百度地图JS API GPS坐标转换成百度地图坐标(修改版)
- 杭电多校HDU 6601 Keen On Everything But Triangle(主席树)题解
- 微信小程序 图片处理:压缩、上传、审核
- 十五. 项目沟通管理
- 自适应在线聊天室源码
- glew库安装和初始化
- 程序员转行一般是因为什么,会去哪些行业?
- 小米盒子刷arm linux,小米盒子刷成原生安卓系统操作步骤详解
- 图形和函数图像的绘制
- loadrunner入门教程(4) --loadrunner的下载
- 续写千倍币神话,PlusFo到底是何方神圣?
- 做人拿得起,做事放得下
- 数据结构课程设计—同学录管理系统(c语言)
热门文章
- MIT | 数据分析、信号处理和机器学习中的矩阵方法 笔记系列 Lecture 6 Singular Value Decomposition (SVD)
- 【刷题日记】笔试经典编程题目(三)
- 极客头条 | 5月13日科技要闻:人民日报调查“浏览器主页劫持”;CEO 回应小霸王游戏机团队解散;陌陌暂时关闭动态发布功能
- linux缺少.h文件解决办法
- 适合自己的书只能靠自己找
- 转载一篇软件工程师的职业规划,以此鞭笞自己
- wincc新建项目无法连接到服务器,wincc flexible 2008 SP2无法连接到SQL服务器
- 百度云盘免费下载postman
- 【CV面试】RGB2GRAY、贝叶斯问题、cv2.add和cv2.addWeighted
- MPlayer移植步骤