注意:此教程是在网站的根目录(/var/www/html/
)下搭建sftp
搭建
A. 创建一个用户组sftp
和用户website
,并设置密码:
1
2
3
groupadd sftp
useradd -g sftp -s /bin/false -d /var/www/html/ website
passwd website
B. 编辑sftp(sshd)的配置文件: vim /etc/ssh/sshd_config
, 作如下修改:
- 在
Subsystem sftp /usr/libexec/openssh/sftp-server
前面添加#
号 - 末尾添加:(部分有的话就直接修改)
Subsystem sftp internal-sftp ##指定使用sftp服务使用系统自带的internal-sftp Match Group sftp ##匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割 ChrootDirectory /var/www/html/ ##sftp主目录指定到/var/www/html/ ForceCommand internal-sftp ##指定sftp命令 AllowTcpForwarding no ##用户不能使用端口转发 X11Forwarding no ##用户不能使用端口转发
C. 设定sftp的主目录权限
1
2
chown root:apache /var/www/html/ #文件夹所有者必须为root,用户组可以不是root
chmod 744 /var/www/html #权限不能超过755,否则会导致登录报错,可以是755
注意: 错误的目录权限设定会导致在log(/var/log/secure)中出现”fatal: bad ownership or modes for chroot directory XXXXXX”, 目录的权限设定有两个要点:
- 由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root
- 由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限
D. 在sftp主目录下创建一个uploads
文件夹,并设置所有者为website
,用户组为sftp
1
2
3
mkdir /var/www/html/uploads/
chown website:sftp /var/www/html/uploads/
chmod 744 /var/www/html/uploads/
E. 重启sshd
服务: systemctl restart sshd.service
登陆
- linux:
sftp website@ip地址
- windows:并不自带sftp命令,只能通过下载ftp连接工具,比如xftp,filezilla, 或者flashfxp等等