
# 搭建FTP服务器（Windows）
#### 简介
FTP（File Transfer Protocol，文件传输协议）是一种在计算机之间通过网络传输文件的标准协议，采用客户端-服务器架构，允许用户从远程服务器上传、下载、重命名、删除、查看文件和目录结构等操作。FTP有两种传输模式，区别如下：
- 主动模式（Active Mode）
  - 客户端通过控制连接（默认端口21）向服务器发送命令，服务器随后主动通过数据连接（默认端口20）连接客户端指定的端口传输数据。
  
  - 适用于客户端网络环境无防火墙限制的场景，但可能因防火墙阻止服务器主动连接而失效。
   
- 被动模式（Passive Mode）
  - 客户端通过控制连接（端口21）发送PASV命令，服务器响应一个动态端口（如1024-65535），客户端主动连接该端口进行数据传输。
  
  - 适用于客户端位于防火墙或NAT后的场景，避免服务器主动连接被拦截。 如果华为云上的其他云服务器，需要通过公网IP地址访问本示例中L实例搭建的FTP服务器时，则需要使用被动模式。
    
   
本文介绍了如何使用Windows操作系统的L实例搭建FTP服务器。该指导具体操作以Windows Server 2019为例。
#### 搭建FTP站点操作流程
Windows实例搭建FTP服务器的具体操作步骤如下：
1. [远程登录L实例。]
2. [添加IIS以及FTP服务角色。]
3. [创建FTP用户名及密码。]
4. [设置共享文件的权限。]
5. [添加及设置FTP站点。]
6. [（可选）配置FTP防火墙支持。]
7. [设置安全组。]
8. [客户端测试。]
 
#### 前提条件
已购买Windows操作系统的L实例，且L实例为"运行中"状态。
#### 操作步骤
1. 远程登录L实例。
   
   1. 登录[Flexus应用服务器L实例控制台](https://console.huaweicloud.com/smb/?/resource/list)。
   
   2. 在资源卡片上，单击![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000002673398289.png)图标，单击"重置密码"，根据界面提示设置L实例的密码。
      L实例无初始密码，创建L实例后，如需登录云主机，请先设置L实例的密码。如果已经设置过密码，请跳过此步骤。
      更多详情请参见[重置Flexus L实例密码](https://support.huaweicloud.com/usermanual-flexusl/instance_admin_0002.html)。
      
   
   3. 单击资源卡片上的"远程登录"按钮，在弹出的登录窗口中，单击"VNC登录"，根据界面提示输入用户名密码登录Flexus L实例。用户名为root，密码为上一步设置的密码。 更多登录方式请参见[登录方式概述](https://support.huaweicloud.com/usermanual-flexusl/server_login_0001.html)。
      
   
   
   
   
2. 添加IIS以及FTP服务角色。
   
   1. 选择"开始 \> 服务器管理器"。
   
   2. 单击"添加角色和功能"。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001953606877.png "点击放大")
      
   
   3. 在弹出的"开始之前"对话框中，单击"下一页(N)"。
   
   4. 选择"基于角色或基于功能的安装"，单击"下一页(N)"。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001953488181.png "点击放大")
      
   
   5. 选择需要部署FTP的服务器，单击"下一页(N)"。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926532526.png "点击放大")
      
   
   6. 选择" Web服务器（IIS）"，并在弹出的对话框中单击"添加功能"，然后单击"下一页(N)"。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001944181126.png "点击放大")
      
   
   7. 连续单击"下一页(N)"，到"角色服务"页面。
   
   8. 选择"FTP服务器" 以及 "IIS管理控制台"，单击"下一页(N)"。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001953510441.png "点击放大")
      
   
   9. 单击"安装"，开始部署服务角色。
   
   10. 安装完成后，单击"关闭"。
   
   
   
   
3. 创建FTP用户名及密码。
   
   创建Windows用户名和密码，用于FTP使用。如果您希望匿名用户可以访问，可以不创建FTP用户和密码。
   1. 在"服务器管理器"中，选择"仪表板 \> 工具 \> 计算机管理"。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926555140.png "点击放大")
      
   
   2. 选择"系统工具 \> 本地用户和组 \> 用户"，在右侧空白处右击，并选择"新用户(N)..."。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001953521113.png "点击放大")
      
   
   3. 设置"用户名"和"密码"，此处用户名以"ftpadmin"为例。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926565612.png "点击放大")
      
   
   4. 单击"创建"。
   
   
   
   
4. 设置共享文件的权限。
   
   需要在FTP站点为共享给用户的文件夹设置访问及修改等权限。
   1. 在服务器上创建一个供FTP使用的文件夹，选择文件夹，并单击右键选择"属性"。 此处以"work01"文件夹为例，且文件夹包含了需共享的文件test.txt。
      
   
   2. 在"安全"页签，选择 "Everyone"，单击"编辑"。 如果没有"Everyone"用户可以直接选择，需要先进行添加 ，添加方法请参见[如何添加"Everyone"用户]。
      ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926427278.png "点击放大")
      
   
   3. 选择"Everyone"，然后根据需要，选择"Everyone"的权限，并单击"确定"。 此处以允许所有权限为例。
      ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926427970.png "点击放大")
      
   
   
   
   
5. 添加及设置FTP站点。
   
   1. 在"服务器管理器"中，选择"仪表板 \> 工具 \> Internet Information Services (IIS)管理器 "。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001953671421.png "点击放大")
      
   
   2. 在"服务器管理器"中，选择"仪表板 \> 工具 \> Internet Information Services (IIS)管理器 "。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001953671421.png "点击放大")
      
   
   3. 在弹出的窗口中，填写FTP站点名称及共享文件夹的物理路径，然后单击"下一步(N)"。 此处站点名称以"FTPSERVER"为例。
      ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001953681121.png "点击放大")
      
   
   4. 输入**L实例的** **私有IP地址** 以及端口号，并设置SSL，单击"下一步(N)"。
      - 端口号 默认为21，也可自行设置 。
      
      - SSL根据需要进行设置。
        - **无**： 不需要SSL加密。
        
        - **允许**：允许FTP服务器与客户端的非SSL和SSL连接。
        
        - **需要** ：需要对FTP服务器和客户端之间的通信进行SSL加密。
          ![](https://support.huaweicloud.com/bestpractice-flexusl/public_sys-resources/note_3.0-zh-cn.png)
          当SSL选择"允许"或"需要"时，需要选择SSL证书。可以选择已有的SSL证书，也可以制作一个SSL证书，具体方法请参见[如何制作服务器证书]。
          
        
        
        ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926484216.png "点击放大")
        
       
   
   5. 设置身份认证和授权信息，并单击"完成"。
      - 身份认证
        - **匿名**：允许任何仅提供用户名 "anonymous" 或 "ftp" 的用户访问内容。
        
        - **基本**：需要用户提供有效用户名和密码才能访问内容。但是基本身份验证通过网络传输密码时不加密，因此建议在确认客户端和FTP服务器之间的网络连接安全时使用此身份验证方法。
         
      
      - 授权
        - 允许访问
          - **所有用户**：所有用户均可访问相应内容。
          
          - **匿名用户**：匿名用户可访问相应内容。
          
          - **指定角色或用户组**：仅指定的角色或用户组的成员才能访问相应内容。如果选择此项，需要在下面输入框中输入指定的角色或用户组。
          
          - **指定用户**：仅指定的用户才能访问相应内容。如果选择此项，需要在下面输入框中输入指定的用户。
           
        
        
        
        - 权限：选择经过授权的用户的"读取"和"写入"权限。
         
      
      
      ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926484216.png "点击放大")
      
   
   
   
   
6. （可选）配置FTP防火墙支持。
   
   - 如果需要使用FTP服务器的被动模式，则需要配置FTP防火墙支持。
   
   - 如果华为云上的服务器，例如其他L实例，需要通过公网IP地址访问本示例中L实例搭建的FTP服务器时，则需要配置FTP防火墙支持。
   
   
   1. 双击"FTP防火墙支持"，打开FTP防火墙支持的配置界面。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001953736401.png "点击放大")
      
   
   2. 配置相关参数，并单击"应用"。
      - 数据通道端口范围：指定用于被动连接的端口范围。可指定的有效端口范围为1025-65535（例如5000-6000）。请根据实际需求进行设置。
      
      - 防火墙的外部IP地址：**输入L实例（FTP服务器）的公网IP地址**。
      
      
      ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001953740021.png "点击放大")
      
   
   3. **重启云服务器** **使防火墙配置生效**。
   
   
   
   
7. 设置安全组。
   
   搭建好FTP站点后，需要在L实例安全组的入方向添加放行FTP端口的规则，具体步骤参见[配置Flexus L实例安全组规则](https://support.huaweicloud.com/usermanual-flexusl/security_admin_0004.html)。放通的端口请参考[表1]。
   如果配置了"FTP防火墙支持"，需要在安全组中同时放行FTP站点使用的端口和FTP防火墙使用的数据通道端口。
   服务器防火墙默认放行TCP的21端口用于FTP服务。如果选用其他端口，需要在防火墙中添加放行此端口的入站规则。
    表1设置安全组规则 
   | 优先级 | 策略 | 类型   | 协议端口                               | 源地址       |
   |:---|:---|:---|:---|:---|
   | 1   | 允许 | IPv4 | 自定义TCP：20-21端口                     | 0.0.0.0/0 |
   | 1   | 允许 | IPv4 | 自定义TCP：1024-65535间的端口（例如5000-6000） | 0.0.0.0/0 |
      
   ![](https://support.huaweicloud.com/bestpractice-flexusl/public_sys-resources/note_3.0-zh-cn.png)
   安全组入方向规则的源地址设置为0.0.0.0/0或::/0，表示允许或拒绝所有外部IP地址访问您的实例，如果端口暴露到公网，可能导致网络入侵，造成业务中断、数据泄露或数据勒索等严重后果。**建议您将安全组规则设置为仅允许已知的IP地址访问，如下一步骤中要访问FTP服务器的客户端的IP地址。**
   
   
8. 客户端测试。
   
   打开客户端的计算机，可以是本地Windows计算机或者其他Windows系统的云服务器，在路径栏输入 "ftp://*FTP服务器公网IP地址* :*FTP端口*"，其中FTP服务器公网IP地址即本示例中的L实例公网IP地址，FTP端口不填则默认访问21端口。
   弹出输入用户名和密码的对话框表示配置成功，正确的输入用户名和密码后，即可对 FTP 文件进行相应权限的操作。
   ![](https://support.huaweicloud.com/bestpractice-flexusl/public_sys-resources/note_3.0-zh-cn.png)
   如果没有配置"FTP防火墙支持"，客户端使用此方法访问FTP站点时，需要对IE浏览器进行设置，才能打开FTP的文件夹。打开IE浏览器，选择"设置 \> Internet 选项 \> 高级"。勾选"启用FTP文件夹视图"，取消勾选"使用被动FTP"。
   ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926512518.jpg "点击放大")
   您也可以在客户端上[下载FileZilla](https://filezilla-project.org/)进行文件传输等操作。
   
   
 
#### FAQ
使用Windows系统搭建FTP站点的更多信息请参见[微软官方文档](https://docs.microsoft.com/en-us/previous-versions/orphan-topics/ws.11/hh831655(v=ws.11)#Step4)。
 #### 如何添加"Everyone"用户
如果设置文件夹的属性时，没有"Everyone"用户可直接选择，可按照如下步骤添加"Everyone"用户。
1. 在"安全"页签，单击"编辑"。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926411116.png "点击放大")
   
2. 在新弹出的窗口中，单击"添加"。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926353158.png "点击放大")
   
3. 在新弹出的窗口中，单击"高级"。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926421146.png "点击放大")
   
4. 在新弹出的窗口中，单击"立即查找(N)"，然后在搜索结果中选择"Everyone"并单击"确定"。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926584998.png "点击放大")
   
5. 单击"确定"，返回权限窗口。
6. 单击"确定"，完成添加。
 
 #### 如何制作服务器证书
1. 在"服务器管理器"中，选择"仪表板 \> 工具 \> Internet Information Services (IIS)管理器 "。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926476632.png "点击放大")
   
2. 在左侧列表单击服务器，然后在服务器主页"IIS"区域，双击"服务器证书"，进入"服务器证书"页面。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001953836489.png "点击放大")
   
3. 单击"创建自签名证书"。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001926478984.png "点击放大")
   
4. 输入证书的名称，并选择证书存储类型，单击"确定"。 ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001953840049.png "点击放大")
   创建成功后会在服务器证书界面显示已经创建的证书。
   ![](https://support.huaweicloud.com/bestpractice-flexusl/zh-cn_image_0000001953721193.png "点击放大")
   
 
