参考:https://www.cnblogs.com/bky185392793/p/7365809.html
一.添加用户和组
groupadd sftp
useradd -g sftp -s /sbin/nologin -M sftp
passwd sftp
-g:加入主要组 -s指定用户登入后所使用的shell -M:不要自动建立用户的登入目录,密码自己定
二,创建sftp用户活动的目录
(1)创建sftp用户的根目录和属主.属组,修改权限(755)
mkdir /data/
cd /data/
mkdir sftp
chown root:sftp sftp
chmod 755 /data/sftp/
(2)在sftp的目录中创建可写入的目录
cd sftp/
mkdir file
chown sftp:sftp file
三.修改sshd_config配置文件cd /etc/ssh/
cd /etc/ssh/
vim sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
# Example of overriding settings on a per-user basis
Match User sftp
X11Forwarding no
AllowTcpForwarding no
# PermitTTY no
ForceCommand internal-sftp
ChrootDirectory /data/sftp
把Subsystem sftp /usr/libexec/openssh/sftp-server注释
配置解释:
Subsystem sftp internal-sftp #使用sftp服务使用系统自带的internal-sftp
Match Group sftp #匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
ChrootDirectory /data/sftp/%u #用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动
ForceCommand internal-sftp #强制执行内部sftp,并忽略任何~/.ssh/rc文件中的命令
AllowTcpForwarding no #不允许转发TCP协议,默认是yes,如果用户可以shell访问则建议为yes
X11Forwarding no #是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。如果启用了 UseLogin ,那么X11转发将被自动禁止。
四.重启服务
# systemctl restart sshd
五.测试