Azure上部署FTP服务
FTP是个比较复杂的协议,其协议分为控制层和数据层,工作模式分为主动和被动两种模式。
在默认的Active模式下其工作原理如下:

可以看到,客户端发起FTP的请求道服务器端,FTP的端口是21。用户在控制层面通过认证后,会通知服务器其开放的随机端口号。随后服务器端将主动发起源端口为TCP 20目标端口为TCP 随机端口号的连接请求,进行数据连接。
在一般情况下,FTP的服务器和客户端都是在防火墙之后的,服务器端的防火墙要明确配置此服务器要对外提供哪些服务的端口,客户端的防火墙要求必须是客户端主动发起连接的TCP 连接才会通过。
因为数据连接是服务器端首先发起,如果FTP客户端在防火墙之后,防火墙会中断此数据连接,导致FTP可以登录,但不能传输数据。
被动模式的工作原理如下:

为解决客户端在防火墙后,FTP不能正常工作的情况,可以选择FTP的被动模式。其在控制层面的过程和主动模式相似,但在用户认证通过,客户端进入PASV模式后,服务器端会根据事先的配置,随机选择特定范围的TCP端口作为数据传输的端口,并开放这个端口等待用户数据的传输,同时并把这个信息发送给客户端,客户端会通过这个端口发起数据传输的请求。当FTP服务器的数据返回给客户端时,客户端前面的防火墙发现此TCP连接是客户端发起的TCP连接,所以服务器的数据会顺利的穿过防火墙,实现数据传输。
所以为能让所有的客户端能够访问FTP服务器,一般情况下,FTP服务器会同时支持主动模式和被动模式。
在Azure环境下,VM的endpoint相当于FTP 服务器前端的防火墙,需要在endpoint上打开所有可能的控制层面和数据层面的端口。所以:TCP 21(控制层面端口)、TCP 20(主动模式数据端口)、多个TCP端口(被动模式的数据端口)都要在endpoint上打开。
另外VM本身的防火墙也要做相应的设置,开放上述端口。
下面将通过安装vsftp为案例,在Azure上部署FTP服务。
共有三个部分:1. 安装vsftp, 2. 设置VM的endpoint ,3. 设置VM的防火墙,之后就可以测试了。
1.安装vsftp
yum install –y vsftpd
更改vsftpd的配置文件:
Vim /etc/vsftpd/vsftpd.conf
添加以下内容:
pasv_enable=YES
pasv_min_port=1120
pasv_max_port=1121
这三行表示:开启被动模式,其数据传输随机端口为1120-1121。
保存后启动vsftpd服务。
2.配置VM的endpoint

可以看到开放了FTP的控制层面端口:21,开放了FTP主动模式的数据端口:20,开放了FTP被动模式的数据端口(此端口是配置文件里配置的):1120、1121。
3.配置VM的防火墙
简化配置,关闭iptables:
iptables –F
service iptables save
至此配置都结束了。测试:
C:\Users\hengz>ftp hwcentos65.chinacloudapp.cn
Connected to hwcentos65.chinacloudapp.cn.
220 (vsFTPd 2.2.2)
200 Always in UTF8 mode.
User (hwcentos65.chinacloudapp.cn:(none)): anonymous
331 Please specify the password.
Password:
230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
pub
226 Directory send OK.
ftp: 8 bytes received in 0.01Seconds 0.67Kbytes/sec.
可以成功显示内容。
Azure上部署FTP服务的更多相关文章
- Azure上部署Barracuda WAF集群 --- 2
前面一篇文章讲了如何在Azure上部署Barracuda.这篇文章聊一聊如何配置Barracuda. License 向Barracuda的销售人员申请WAF的License.得到License后打开 ...
- 在 CentOS7 上部署 zookeeper 服务
在 CentOS7 上部署 zookeeper 服务 1 用 SecureCRT 或 XShell 等 Linux 客户端工具连接至 CentOS7 服务器: 2 进入到 /usr/local/too ...
- 在Win7的IIS上搭建FTP服务及用户授权
FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属于应用层协议(端口号通常为21),用于Internet上的双向文件传输(即文件的上传和下载).在网络上有 ...
- 在Win7的IIS上搭建FTP服务及用户授权——转载!!
原文地址:http://blog.sina.com.cn/s/blog_6cccb1630100q0qg.html FTP服务 FTP是文件传输协议(File Transfer Protocol)的简 ...
- 在 Windows Azure 上部署预配置 Oracle VM
Microsoft 和 Oracle 近期宣布建立战略合作伙伴关系,基于此,我们将通过 Windows Azure 镜像库推出多种常用的 Oracle 软件配置.即日起,客户可以在 Windows S ...
- 在Azure上部署IPv6的App通过IOS App Store审核
随着中国企业出海Go Global,越来越多的用户开始在Global Azure部署自己的应用.由于对Global Azure功能和文档的不熟悉,使用过程中或多或少遇到了一些坑.事实上呢,这些并不是坑 ...
- OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 5.在控制节点上部署计算服务Nova
计算服务Nova使用OpenStack Compute来托管和管理云计算系统. OpenStack Compute是基础架构即服务(IaaS)系统的主要部分. 主要模块用Python实现.OpenSt ...
- 【转】在Win7的IIS上搭建FTP服务及用户授权
[转]在Win7的IIS上搭建FTP服务及用户授权 [转]在Win7的IIS上搭建FTP服务及用户授权 FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属 ...
- 在IIS上搭建FTP服务
FTP服务 FTP是文件传输协议(File Transfer Protocol)的简称,该协议属于应用层协议(端口号通常为21),用于Internet上的双向文件传输(即文件的上传和下载).在网络上有 ...
随机推荐
- HTML元素嵌套关系
- vue v-on命令
<!-- 阻止单击事件冒泡 --> <a v-on:click.stop="doThis"></a> <!-- 提交事件不再重载页面 ...
- Linux显示网络相关信息
netstat -tlun 查看本机监听的端口 netstat -an 查看本机所有的网络连接 netstat -rn 查看本机路由表 -t TCP协议 -u UDP协议 - ...
- 数组的includes操作
数组实例的 includes() Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似.ES2016 引入了该方法. [ ...
- linux shell 中数组使用方法介绍
linux shell在编程方面比windows 批处理强大太多,不管是在循环.运算.已经数据类型方面都是不能比較的. 以下是个人在使用时候,对它在数组方面一些操作进行的总结. 1.数组定义 [che ...
- HackerRank - beautiful-binary-string 【字符串】
题意 给出一个 N 位的 01 串 然后 每次 改动 可以将其中的 (0 -> 1) 或者 (1 -> 0) 然后 求 最少几次 改动 使得 这个 01 串 当中 不存在 连续的 010 ...
- 《程序员代码面试指南》第一章 栈和队列 设计一个有getMin功能的栈
题目 实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小的元素的操作 要求 1. pop.push.getMin操作时间复杂度都是O(1) 2. 设计的栈类型可以使用现成的栈结构 java代码 ...
- 大话设计模式--外观模式 Facade -- C++实现实例
1. 外观模式: 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用. 外观模式的使用场合: A: 设计初期阶段,应该要有意识的将不同的两个层分离. ...
- Oracle的PL_SQL的结构
--PL/SQL的结构 declare --声明变量和常量关键字 v_name nvarchar2(); v_age integer;--常规变量声明 v_product table_name.col ...
- JAVA发送手机短信
<p><span>JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册 ...