1、复制配置文件

cp /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sftpd.service
cp /etc/ssh/sshd_config /etc/ssh/sftpd_config

2、修改sftpd.service配置文件

vim /usr/lib/systemd/system/sftpd.service

[Unit]
Description=Sftpd server daemon

[Service]
ExecStart=/usr/sbin/sshd -f /etc/ssh/sftpd_config

3、修改/etc/ssh/sftpd_config配置文件

vim /etc/ssh/sftpd_config

Port 12345   # 端口可自定义
#Subsystem      sftp    /usr/libexec/openssh/sftp-server   # 注释掉
Subsystem sftp internal-sftp
Match User sftpuser                       ##限制用户
    ChrootDirectory /sftpdir                  ##限制sftp目录
    X11Forwarding no                          ##与sftp无关,所以关闭
    AllowTcpForwarding no                     ##与sftp无关,所以关闭
    PermitTTY no                              ##不允许登入TTY
    ForceCommand internal-sftp
备注:
  Sftp目录权限设置要遵循2点:
  ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主必须是root;
  ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是755。

4、增加sftp用户并创建目录和赋权

useradd sftpuser
passwd sftpuser
usermod -s /bin/false sftpuser        # 使用/bin/false,限制该用户通过shell登入OS

mkdir /sftpuser/upload
chown root.sftpuser /sftpuser
chown sftpuser.sftpuser /sftpuser/upload
chmod -R 755 /sftpuser  
# /sftpuser/upload  为最终文件上传下载目录。注意,因为使用ChrootDirectory,所以sftp的时候不能使用绝对路径/sftpuser/upload/xxx

5、启动服务

systemctl daemon-reload
systemctl start sftpd

参考资料:
https://www.cnblogs.com/caoyibin/p/15205287.html
https://codeleading.com/article/59295569585/