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/