SFTP的好处不用多说,安全,简单,便于管理(尤其在防火墙端口设置方面)。

Linux下配置SFTP非常简单。


此例中要求:用户ftpuser可以上传数据至/media/data/shared/ftproot,不允许读取和修改上级目录的数据。不允许SSH登陆至服务器。


  • 创建用户和组。指定用户的home目录为/media/data/shared,shell为/sbin/nologin, 隶属于sftp_users组,并为其创建密码。

    wKiom1aCODSwFaxCAAA36D_ncd0982.png

  • 创建目录,并修改权限:/media/data/shared/ftproot

    注意:ftpuser的home目录的属主和属组改为root,并且权限为755。此时ftpuser用户不具有写入权限,也就不能上传数据,可以在该目录下创建一个可上传的目录,并修改它的属主和属组,使其具有写入权限。

    wKioL1aCOMfSglgJAAAnlEqn4RM924.png


    • ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;

    • ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755

  • 修改配置文件。

    vim /etc/ssh/sshd_config    

UsePAM yes(确定该行没有被注释)
#Subsystem      sftp    /usr/libexec/openssh/sftp-server  #(注释掉这行)
Subsystem       sftp    internal-sftp  #(这行指定使用sftp服务使用系统自带的internal-sftp。)
Match Group     sftp_users  #(匹配sftp用户所属的组,也可用“Match User USERNAME”来匹配用户)
    ChrootDirectory %h  #(非常重要!使用ChrootDirectory将用户锁定在自己的home目录中,使其不可浏览上级目录。并且该行一定要在“Match”语句下方!)

    

  • 重启sshd.service。