创建sftp用户


useradd -s /sbin/nologin -M sftpuser

# 用户设置密码
passwd sftpuser
haoniu@888

# 设置密码之后如果出现:passwd :all authentication tokens updated successfully

# sftp的用户sftpuser创建后,当然就是为该sftpuser用户创建指定的根目录
mkdir /sftp
# 创建该/sftp目录之后,需要设置该目录的权限,确保该目录及该目录以上的系统根目录的拥有者都只能是root用户
chown root:root /sftp

# 其次要确保该跟目录往上的根目录都不可以具有群组写入权限
chmod 755 /sftp

# 创建用户sftpuser目录
mkdir /sftp/620100

# 给该用户赋予sftpuser该sftp用户的目录权限
chown root:sftpuser /sftp/620100

# 我们一般都需要对该命令进行读写操作
chown sftpuser:sftpuser /sftp/620100
chmod 755 /sftp/620100

# 这里的目录sftp的权限也只能是755,否则无法限制目录,切记切记

# 又一个重点,就是配置sshd_config
vi /etc/ssh/sshd_config
注释掉这行:#Subsystem sftp /usr/libexec/openssh/sftp-server
添加这行:Subsystem sftp internal-sftp(#指定使用sftp服务使用系统自带的internal-sftp,如果不添加,用户无法通过sftp登录。)


配置文件末尾添加:

Match User sftpuser #匹配用户,如果要匹配多个组,多个组之间用逗号分隔
ChrootDirectory /home/sftp/620100 #用chroot将指定用户的根目录
ForceCommand internal-sftp #指定sftp命令
X11Forwarding no #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
AllowTcpForwarding no

# 配置后重启sshd服务器
systemctl restart sshd.service

# 查询sshd启动状态
systemctl status sshd.service

# sftpuser用户进行登录测试
sftp -oPort=22 sftpuser@ip


################################################
/home/sftp/ root root
/home/sftp/sftpuser/ root sftpuser
/home/sftp/sftpuser/java sftpuser sftpuser 755