SFTP用户配置 ¶
简介 ¶
SFTP(SSH File Transfer Protocol,安全文件传输协议)是一种基于 SSH(Secure Shell)协议的安全文件传输协议,主要用于在客户端与服务器之间提供加密的文件传输服务。它并非传统 FTP 协议的简单加密扩展,而是 SSH 软件包中的一个独立子系统。
注意事项 ¶
- 如果有多个用户,可以用用户组进行统一管理;如果是每个用户单独管理,可不设置用户组
- 新建用户时可以不设定家目录,后续ssh配置时直接设定指定目录
- Chroot配置:开启后,可以将用户限制在某个目录;不配置:用户可以查看服务器上所有文件
- Chroot权限强制规则:chroot 目录本身
属主:root,属组:root;用户要上传 / 写入:必须在 chroot 里面再建子目录,把子目录给用户
用户配置 ¶
新建用户组
bash1groupadd sftpgroup新建用户并设置密码
bash1# 新建用户,-M不设家目录,-s /usr/sbin/nologin 禁止登录 2useradd -M -G sftpgroup -s /usr/sbin/nologin BK102 3 4# 设置密码 5passwd BK102创建chroot目录,以及用户可操作的上传目录
bash1# 创建chroot目录,并设置属主属组(chroot目录权限校验如此) 2mkdir -p /srv/sftpDir 3chown root:root /srv/sftpDir 4chmod 755 /srv/sftpDir 5 6# 创建用户上传目录 7mkdir -p /srv/sftpDir/BK102 8chown BK102:BK102 /srv/sftpDir/BK102 9chmod 700 /srv/sftpDir/BK102
ssh配置 ¶
可以配置组或者用户,根据情况选择
配置组
ini1Match Group sftpgroup 2 # 禁止 X11 转发 3 X11Forwarding no 4 # 禁止 TCP 转发 5 AllowTcpForwarding no 6 # 禁止分配 TTY 7 PermitTTY no 8 # 强制使用内部 SFTP 服务 9 ForceCommand internal-sftp 10 # 将用户锁定在其家目录中(可以直接指定目录) 11 ChrootDirectory /srv/sftpDir配置用户
ini1Match user BK102 2 # 禁止 X11 转发 3 X11Forwarding no 4 # 禁止 TCP 转发 5 AllowTcpForwarding no 6 # 禁止分配 TTY 7 PermitTTY no 8 # 强制使用内部 SFTP 服务 9 ForceCommand internal-sftp 10 # 将用户锁定在其家目录中(可以直接指定目录) 11 ChrootDirectory /srv/sftpDir
配置完成后重启ssh:
bash
1systemctl restart sshd测试 ¶
bash
1sftp username@ip:port