FTP,FTPS 与 SFTP 的区别

FTP (File Transfer Protocol)是一种常用的文件传输协议,在日常工作中被广泛应用。不过,FTP 协议使用明文传输。如果文件传输发生在公网,会将所有密码凭据、操作指令,以及传输的文件内容,都以明文的方式暴露出来,特别是在公有云广泛应用的今天,这种传输方式对数据安全有极大的隐患。

针对这种情况,FTPS 和 SFTP 应运而生。虽然这两种传输方式都基于 FTP,而且名字非常相近。即便它们的目的都是为了使文件传输更安全,它们的实现原理也有很大的差别。

FTPS 全称是 File Transfer Protocol over SSL。SSL 是一个用来在安全连接中对数据进行加密和解密的协议。FTPS 使用 SSL 来加密、解密所有的数据连接,所以它的安全性比明文传输的 FTP 协议要高很多。

SFTP 全称是 Secure File Transfer Protocol,是 SSH 内嵌的协议。它借助 Linux/Unix 的 SSH 协议来加密文件传输过程。使用 SFTP 时,不需要启动 FTP 服务,只要在 SSHD 中开启了 SFTP 的相关配置,并启动 SSHD 服务即可运行。

下文中,我将介绍如何在 Azure 中快速搭建 FTPS 服务。

搭建步骤

在 Azure 中部署 Windows Server 2016 Datacenter

本文的介绍中,我在 Azure 门户里使用 Windows Server 2016 Datacenter 来部署承载 FTPS 服务的虚拟机。如果您使用 Windows Server 2008 或者 2012,也可以参考本文来搭建 FTPS 服务。配置过程基本一致。

虚拟机创建的过程中需要注意的是,创建公共 IP 地址时,需要使用静态 IP。这样可以确保虚拟机重启后,IP 不会改变。在后面的步骤里,这个 IP 还需要配置到 FTPS 服务的防火墙中。如果因重启而改变了, 会导致 FTPS 服务无法访问。

配置服务器角色和功能

虚拟机部署好后,使用远程桌面连接登录到这台虚拟机。 在服务器角色配置中选择 Web Server ( IIS )。

在 IIS 的角色服务配置中选择 FTP Server,并确保选中了 FTP Service。

然后确认安装,并等待安装完成。

配置全局 FTP 防火墙规则

打开 Internet Information Services (IIS) Manager。

双击 FTP Firewall Support,打开全局 FTP 防火墙配置。在数据通道端口范围中,填入 55000-55004。这些端口将在 FTP 被动连接中用来传输数据。另外,将虚拟机的 公共 IP 地址填入外部 IP 地址框内。完成后,点击右侧的 Apply。弹出的对话中不用理会,直接点击 OK 即可。

创建自签名证书

还是在 Internet Information Services (IIS) Manager 窗口中,双击 Server Certificate。然后在打开的窗口右侧点击 Create Self-Signed Certificate…。

在弹出的创建证书窗口中,输入证书的名字,然后点击 OK。创建好后能在窗口中看到刚创建的自签名证书。

创建 FTP 站点

继续在 Internet Information Services (IIS) Manager 窗口中,选中 Site。然后在右键菜单中,点击 Add FTP Site…。

在 Add FTP Site 向导中,为 FTP 站点起个名字,并选择物理路径。 这里有两点需要注意。一是不要将 FTP 目录放置在 D 盘。因为 D 盘是临时盘,机器重启后,里面的文件会被全部移除。二是所选的路径需要对 FTP 账号开放读写权限。这里我使用登录虚拟机的管理员账号来访问 FTP。如果您使用新建的账号来登录 FTP,务必确认该账号对您配置的 FTP 目录有读写权限。

Binding and SSL Settings 步骤里,在 SSL Certificate 的下拉菜单中,选中刚才创建的自签名证书。其他配置保持不变。

Authentication and Authorization Information 步骤中,Authentication 选择 Basic,这样可以使用用户名和密码来登录。Authorization 中,Allow access to 选择 All users, Permissions 选择 Read 和 Write。完成后点击 Finish。

重启 FTP 服务

在左下角的 Windows 徽标点击右键,开启管理员模式的命令提示符窗口。

然后在命令提示符中,输入以下命令来重启 FTP 服务。重启的目的在于使之前的配置生效,特别是防火墙配置。

复制
    net stop ftpsvcnet start ftpsvc

配置网络安全组(NSG)

回到 Azure 门户页面,找到虚拟机对应的网络安全组,然后为 FTP 服务所需的端口添加对应的入站安全规则。这里需要添加的有两个规则。一是 FTP 控制命令所需的 TCP 21 端口,二是之前在虚拟机中,为 FTP 服务添加的数据通道端口,TCP 55000 至 55004。添加完成后,如下图所示。

FTP 客户端配置

以上步骤完成后,FTPS 服务器就搭建好了。下一步就可以使用客户端来实现对 FTPS 服务的访问了。 这里有一点需要注意,使用 IIS 管理器创建的自签名证书,与 FileZilla Client 3.24 不兼容。所以如果您要使用 FileZilla Client,可以使用低一点的版本,或者别的 FTP 客户端,例如 Flash FXP。下文中我以 FileZilla Client 3.21 版为例。 在客户端运行 FileZilla,新建一个 FTP 站点。其中主机填入之前创建的虚拟机的公共 IP。端口可以不填,因为在下面的协议中,默认选择了 FTP,所以这里端口会默认使用 TCP 21。 登录类型选择正常,并输入用户名和密码。这里用户名和密码就是我之前用来登录 FTPS 服务器的用户名和密码。当然,您也可以填入您在服务器中单独为 FTP 服务创建的账号和密码。

在传输设置标签下,选择被动传输模式。

设置完成后,点击连接。

FileZilla Client 第一次连接到 FTPS 服务器时,因为我们的证书为自签名证书,客户端无法确认其有效性,所以会弹出未知证书的警告。直接点击确定即可。

这样,客户端就连接到 FTPS 服务了。

小结

本文的配置步骤非常简单,不到 30 分钟就能完成包括虚拟机创建在内的所有步骤。整个 FTPS 服务的搭建有以下几个关键点,我为大家总结一下:

  • 虚拟机配置静态公共 IP;
  • FTP 服务防火墙中配置被动模式的数据端口;
  • 网络安全组(NSG)创建对应的入站规则;
  • FTP 客户端使用被动模式传输数据。

本文中使用的是 IIS 自带的 FTP 服务搭建的 FTPS 站点。如果您要在 Azure 的虚拟机中使用其他 FTP Server 软件来部署,也需要确保完成以上几个关键步骤。

立即访问http://market.azure.cn

Azure 中快速搭建 FTPS 服务相关推荐

  1. Android连接SQLServer详细教程(数据库+服务器+客户端),并在微软Azure云上搭建云服务

    Android连接SQLServer详细教程(数据库+服务器+客户端),并在微软Azure云上搭建云服务 参考博客:http://blog.csdn.net/zhyl8157121/article/d ...

  2. 【Microsoft Azure 的1024种玩法】四十五.在Azure中快速创建Azure AD Domain Services

    [简介] Azure Active Directory (Azure AD) 是一种基于云的标识和访问管理服务. Azure Active Directory 可帮助相关企业访问内部资源,例如企业 I ...

  3. Laragon 在Windows中快速搭建Laravel本地开发环境

    1.应用场景 主要用于快速搭建开发环境,帮助快速开发或者验证一些代码执行等. 优点: 功能更加强大, 更加简便好用 2.学习/操作 简介 对于那些使用 Windows 操作系统的同学来说,Homest ...

  4. 在ArcGIS中快速搭建三维场景教程(从数据获取到软件制作)

    Enterprise本地Web效果 一. 背景及目标 (1)背景:最近看到许多通过下载的GIS数据结合rhino等设计软件生成三维模型的教程,个人感觉其实这些设计软件用来快速生成三维模型,特别是对接的 ...

  5. 快速搭建Kerberos服务端及入门使用

    快速搭建Kerberos服务端及入门使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Kerberos是一种网络身份验证协议.它旨在通过使用秘密密钥加密为客户端/服务器应用程序提 ...

  6. Spring Boot如何在最短时间里快速搭建微服务框架,详细教程贡上

    前言: Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置. 简单来说,它提供了一堆依赖打包,并 ...

  7. Linux中如何搭建FTP服务

    文章目录 如何搭建FTP服务,并设置匿名用户访问FTP服务的最大权限 设置本地用户验证访问ftp,并禁止切换到ftp以外的目录(默认登录的根目录为本地用户的家目录) 修改匿名用户,本地用户登录的默认根 ...

  8. 一文学会快速搭建Janus服务端

    1.概述 想要了解Janus,首先需要知道WebRTC以及Janus和WebRTC之间的关系,本文将会对这些内容做简单的介绍,同时也会介绍一下Janus的架构,Janus可以实现的功能,并展示如何快速 ...

  9. 记录一下:使用 python -m SimpleHTTPServer 快速搭建http服务

    为什么80%的码农都做不了架构师?>>>    在 Linux 服务器上或安装了 Python 的机器上,Python自带了一个WEB服务器 SimpleHTTPServer. 我们 ...

最新文章

  1. 解读Java 8 中为并发而生的 ConcurrentHashMap
  2. web项目html页面过多,详解webpack4多入口、多页面项目构建案例
  3. MUI多端发布开发指南(终于把MUI的使用场景说清楚了)
  4. 使用$.post和$.get向服务器发送请求
  5. 【千字分析】剑指 Offer 46. 把数字翻译成字符串
  6. 基于TCP的在线聊天程序
  7. Java从string数组创建临时文件
  8. 【POJ - 1947】Rebuilding Roads (树形dp,背包问题,树形背包dp)
  9. struct linger
  10. Spring MVC 之@Controller@RequestMapping详解
  11. 格力:核心科技有时也是高利贷
  12. 大道至简 爱上Metro
  13. 计算机设备管理程序在哪,设备管理器在哪里查找?如何打开?
  14. 面向服务架构(SOA)和企业服务总线(ESB)
  15. ICMP数据包结构(转)
  16. HTML5七夕情人节表白网页制作【圣诞节3d相册】HTML+CSS+JavaScript 圣诞节3D相册代码表白制作
  17. Big5和Gb编码转换
  18. java traingdx函数实现_提取伪彩色图像的信息
  19. 遗传算法--适应度尺度变换
  20. Android瘦身优化

热门文章

  1. python for 循环中使用 remove 删除列表中的元素
  2. python 加密和解密
  3. Windows10 中使用 virtualbox 安装ubuntu 虚拟机
  4. 三十五、虚拟内存的基本概念
  5. Python常用函数与技巧总结(二)
  6. 车辆2D/3D--Deep MANTA: A Coarse-to-fine Many-Task Network for joint 2D and 3D vehicle analysis
  7. #圆的周长和面积面向对象_数学实验 | 圆的面积公式推导
  8. MySql各种锁机制的学习
  9. 互联网各大公司职级和薪资一览
  10. Vue Router webpack