创建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