Debian 10 配置SFTP

这里是给自己的blog一个sftp的上传通道,所以用户名 文件夹都叫blog

创建用户组

groupadd blog

创建用户并不允许该用户登录

mkdir -p /usr/share/sftp
useradd -g blog -s /bin/nologin -d /usr/share/sftp blog
# 删除用户 userdel blog
# 查看用户 cat /etc/passwd

设置密码

passwd blog

配置sshd_config

# vi /etc/ssh/sshd_config

屏蔽下方这行
#Subsystem sftp /usr/libexec/openssh/sftp-server

添加如下几行
Subsystem sftp internal-sftp #这行指定使用sftp服务使用系统自带的internal-sftp
Match User blog #这行用来匹配用户
ChrootDirectory /usr/share/sftp  #用chroot将用户的根目录指定到/usr/share/sftp ,这样用户就只能在/usr/share/sftp下活动
AllowTcpForwarding no
ForceCommand internal-sftp #指定sftp命令
为什么用 internal-sftp 而不用默认的 sftp-server,这是因为: 
这是一个进程内的 sftp 服务,当用户 ChrootDirectory 的时候,将不请求任何文件;
更好的性能,不用为 sftp 再开一个进程

重启sshd服务

# systemctl restart sshd.service

设定Chroot目录权限

# chown -R root:root /usr/share/sftp
# chmod 755 /usr/share/sftp

建立SFTP用户登入后可写入的目录并授权

# mkdir -p /usr/share/sftp/blog
chown -R blog:blog /usr/share/sftp/blog
chmod 755 /usr/share/sftp/blog

测试是否能连接

sftp -P 22 blog@127.0.0.1    
# 查看上传路径
sftp> ls