# 搭建SFTP
#### 简介
SFTP（Secure File Transfer Protocol）是一种用于安全访问、传输和管理大文件和敏感数据的网络协议，它通过SSH协议运行，能够支持SSH完整的安全和身份验证功能。本教程介绍如何在HCE上部署SFTP服务。
#### 准备工作
- 准备一台ECS实例，并分配公网IP或者弹性公网IP（EIP）。
 
- 安全组的入方向规则已放通22端口。
#### 操作步骤
1. 执行如下命令创建SFTP组：
   ```
   groupadd sftp
   ```
   
2. 执行如下命令，创建一个用户，用户登录SFTP服务：
   ```
   useradd -g sftp -s /bin/false usftp
   ```
   
3. 执行如下命令为上述新用户设置密码：
   ```
   passwd usftp
   ```
   
4. 执行如下命令为SFTP用户组创建home目录：
   ```
   mkdir -p /data/sftp/usftp
   ```
   
5. 执行如下命令修改usftp用户登录时的目录：
   ```
   usermod -d /data/sftp/usftp usftp
   ```
   
6. 打开/etc/ssh/sshd_config文件，找到以下参数进行配置：
   ```
   # 找到 Subsystem 配置项替换为以下配置
   Subsystem sftp internal-sftp
   # 在文件末尾添加如下配置：
   Match user usftp  # 匹配usftp用户
   AllowTcpForwarding no # 不允许转发TCP协议
   X11Forwarding no # 不允许进行 X11 转发
   # 使用chroot将用户根目录指定到/data/sftp/%u，%u代表用户名
   ChrootDirectory /data/sftp/usftp
   ForceCommand    internal-sftp # 强制执行内部sftp
   ```
   配置完成后执行以下命令重启sshd服务：
   ```
   systemctl restart sshd
   ```
   
7. 执行如下命令，创建测试文件：
   ```
   touch /data/sftp/usftp/test.txt
   ```
   
8. 依次执行如下命令设置目录权限：
   ```
   chown -R root:sftp /data/sftp/usftp
   chmod 755 /data/sftp/usftp
   ```
   
9. 在另外一台机器上，输入以下命令连接上述SFTP服务：
   ```
   sftp usftp@<SFTP服务公网IP>
   ```
   
10. 输入密码后执行**ls** 命令查看测试文件：
    ```
    sftp> ls
    test.txt
    ```
    
 
