先切换到root用户,下文中使用sftp作为组用户,sftpvdes作为账户使用。
因为需要用到chroot,所以openssh 版本不能低于4.8p1
ssh -V
创建用户分组sftp
groupadd sftp
添加用户sftpvdes至组用户sftp
useradd -g sftp -s /sbin/nologin sftpvdes
注:-g后面接组;-s指定用户登入后所使用的shell,默认值为/bin/bash。
【/bin/bash】指:用户即能使用账号密码连接sftp,又能使用账号密码登录该Linux服务器;
【/sbin/nologin】指:用户只能使用账号密码连接sftp,不能使用账号密码登录该Linux服务器;对于FTP、SFTP、SMTP等程序级服务,我们一般都设置为【/sbin/nologin】。
修改sftpvdes用户的密码
passwd sftpvdes
本次设置密码 1qazxsw2
创建一个目录,来专门存放sftp相关文件
先cd到根目录
cd /
创建 sftp 文件夹
mkdir /sftp
然后为了规范一下,在针对每个账户创建一个文件夹,
上面我们创建了sftpvdes用户,再次创建一个sftpvdes文件夹
cd /sftp/
mkdir sftpvdes
cd sftpvdes
此时我们就处在了 sftpvdes 这个文件夹位置,这个文件夹可以用来存放想要上传的文件,比如在创建一个file文件家,来存放文件,或者jpg文件夹来存放图片
mkdir files
修改sshd_config的配置文件
vi /etc/ssh/sshd_config
注释掉原文档下面语句
#Subsystem sftp /usr/lib/openssh/sftp-server
在文档最下边添加
Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /sftp/%u ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
注:上面的Match Group 后面的sftp需要匹配一开始建的分组名
注:上面的ChrootDirectory 后面的sftp需要匹配创建的文件夹名
设定Chroot目录权限
chown -R root:sftp /sftp
chmod 755 /sftp
chmod 755 /sftp/sftpvdes
chmod 777 /sftp/sftpvdes/files
重启sshd配置
service sshd restart
测试链接
连接成功