SFTP配置

默认情况下, 只要开启了sshd服务, 就可以远程使用sftp服务传输文件, 但有时候, 我们希望用户只能访问特定的目录, 该如何配置?

配置前

默认进入用户目录, 并且可以随意切换目录

开始配置

vi /etc/ssh/sshd_config
#############################################
# 修改
Subsystem sftp internal-sftp

# 配置用户根目录及创建文件权限
Match User magina
  ChrootDirectory /opt/sftp
  ForceCommand internal-sftp -u 0002 -m 664 
  AllowTcpForwarding no
  X11Forwarding no
  PermitTTY no
  • -u 0002 默认上传文件夹权限为 775
  • -m 664 默认上传文件权限为 664
  • PermitTTY no 禁止用户远程登录

验证

这里大坑!为什么设置ChrootDirectory /opt/sftp, 而不是给用户单独设置/opt/sftp/magina

  1. 用户设置的根目录所属用户和组必须是root
  2. 文件夹的权限不能大于755

如果设置成/opt/sftp/magina, magina用户就只能读不能写了, 可以自己验证下. 如果是FTP服务, 就不会有这个限制

另外, 也可以对用户组进行配置

Match Group admin
  # 允许该用户组的所有用户
  AllowUsers * 
  ChrootDirectory /opt/sftp
  ForceCommand internal-sftp -u 0002 -m 664 
  AllowTcpForwarding no
  X11Forwarding no
  PermitTTY no

如果设置了PermitTTY no, 用户就不可远程登陆了, 也就不需要修改/etc/passwd

展示评论