简单步骤:
1. 创建sftp用户组
groupadd sftpuser
2. 创建sftp测试用户sftptestuser并指定用户组sftpuser
useradd -s /sbin/nologin -M -g sftpuser sftptestuser
-M表示不创建用户主目录-s /sbin/nologin表示禁止用户ssh登录-g表示指定用户组
3. 设置用户密码
passwd sftptestuser
4. 创建sftp根目录,所有sftp用户都将在该目录下活动。
mkdir -p /data/sftp
5. 设置目录权限,目录的权限设定有两个要点:
-
目录开始一直往上到系统根目录为止的目录拥有者都只能是
root -
目录开始一直往上到系统根目录为止都不可以具有群组写入权限
chown root:root /data/sftp
chmod 755 /data/sftp
6. 创建用户sftptestuser的sftp根目录,目录名为用户名
cd /data/sftp
mkdir sftptestuser
7. 设置sftptestuser目录权限
chown root:sftpuser /data/sftp/sftptestuser
chmod 755 /data/sftp/sftptestuser #限制目录权限。
8. 配置sshd_config
vim /etc/ssh/sshd_config
修改如下内容:
#注释掉下面一行
#Subsystem sftp /usr/libexec/openssh/sftp-serve
#添加这行:
Subsystem sftp internal-sftp #指定使用sftp服务使用系统自带的internal-sftp
文件末尾添加:
Match Group sftpuser #匹配用户组,如果要匹配多个组,多个组之间用逗号分割
ChrootDirectory /data/sftp/%u #用chroot将指定用户的根目录,这里的%u指的是账号名
ForceCommand internal-sftp #指定sftp命令
X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
AllowTcpForwarding no
9. 重启sshd服务
systemctl restart sshd.service #重启sshd
systemctl status sshd.service #查询sshd启动状态
10、sftptestuser用户登录测试:
sftp -oPort=22 sftptestuser@127.0.0.1
附:
至此已经搭建好了sftp服务,如果需要新增sftp用户的话,只需重复2、3、6、7步骤即可