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 ftpsvc
net 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. 快速搭建Kerberos服务端及入门使用

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

  2. Go语言micro之快速搭建微服务

    背景 go-micro给我们提供了一个非常便捷的方式来快速搭建微服务,而且并不需要提前系统了解micro,下面用一个简单的示例来快速实现一个服务. 创建Proto文件 因为我们要做微服务,那么就一定有 ...

  3. 后续来啦:Winform/WPF中快速搭建日志面板

    后续来啦:Winform/WPF中快速搭建日志面板 继昨天发文ASP.NET Core 可视化日志组件使用(阅读文章,查看视频)后,视频下有朋友留言 "Winform客户端的程序能用它不?& ...

  4. 快速搭建FTP服务

    Linux下ftp服务可以通过搭建vsftpd服务来实现,以CentOS为例,首先查看系统中是否安装了vsftpd,可以通过执行命令 rpm -qa | grep vsftpd 来查看是否安装相应的包 ...

  5. 使用 python -m SimpleHTTPServer 快速搭建http服务

    摘要: 在 Linux 服务器上或安装了 Python 的机器上,可以使用 nohup python -m SimpleHTTPServer [port] & 快速搭建一个http服务. 在 ...

  6. 快速搭建http服务:共享文件--Java的我,不知Python你的好

    在 Linux 服务器上或安装了 Python 的机器上, 我们可以在指定的文件目录下,使用  python -m SimpleHTTPServer 快速搭建一个http服务,提供一个文件浏览的web ...

  7. 使用 python快速搭建http服务

    在 Linux 服务器上或安装了 Python 的机器上,Python自带了一个WEB服务器 SimpleHTTPServer. 我们可以很简单的使用  python -m SimpleHTTPSer ...

  8. python快速搭建http服务

    在Windows 7/10或Ubuntu上可以通过python2.x或python3.x来快速搭建一个简单的HTTP服务器. 如果python为2.x,则可执行:$ python -m SimpleH ...

  9. Spring-boot:快速搭建微服务框架

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

随机推荐

  1. Sublime Text 3安装插件(Mac 10.12)

    1.先安装Package Control,默认这个是没有安装的. 使用[control + -]打开控制台,输入以下代码: import urllib.request,os; pf = 'Packag ...

  2. Windows里下载并安装phpstudy(图文详解)

    不多说,直接上干货! 帮助站长快速搭建网站服务器平台! phpstudy软件简介 此是基于phpStudy 2016.01.01. 该程序包集成最新的Apache+Nginx+LightTPD+PHP ...

  3. hadoop-2.6.0.tar.gz + spark-1.5.2-bin-hadoop2.6.tgz的集群搭建(单节点)(Ubuntu系统)

    前言 本人呕心沥血所写,经过好一段时间反复锤炼和整理修改.感谢所参考的博友们!同时,欢迎前来查阅赏脸的博友们收藏和转载,附上本人的链接.http://www.cnblogs.com/zlslch/p/ ...

  4. redis的数据类型(二)string类型

      下面讲解value,value包括String.List.Set.Sorted Set.Hash 一.String类型 1.string类型  String是最基本的类型,而且Stirng类型是二 ...

  5. 关于css浮动框是否脱离文档流的分析

    在了解浮动属性之前,首先我们先了解一下html中关于display属性的相关知识. display属性常用的有inline, block, inline-block. inline也就是内联的意思. ...

  6. 一个简单好用的强制删除软件geek

    给大家推荐geek软件工具,一个可以用来强制卸载那些常规手段无法卸载的软件,到官网(https://geekuninstaller.com/download)下载免费版,运行软件后,选择需要强制删除软 ...

  7. i.mx android6 输入子系统分析(未完)

    参考:http://blog.csdn.net/u010312937/article/details/53285286 https://www.jianshu.com/p/7fca94b330ea   ...

  8. Codeforces F. Cowmpany Cowmpensation

    Description 有一棵树,现在要给每个节点赋一个在1到D之间的权值,问有多少种方案满足任意一个节点的权值都不大于其父亲的权值. n<=3000,D<=1e9 题面 Solution ...

  9. BeanPostProcessor接口

    BeanPostProcessor接口及回调方法图 1.InstantiationAwareBeanPostProcessor:实例化Bean后置处理器(继承BeanPostProcessor) po ...

  10. layer关闭弹出层返回值到父页面

    1.首先在父页面定义一个空间,Id=layerResult 然后 layer.open({ type: , title: '选择看课件', shadeClose: true, shade: 0.8, ...