1)创建用户组和用户
groupadd mysftp #创建用户组
useradd tom -g mysftp -s /sbin/nologin
passwd tom #修改用户的密码
注:-g后面接组;-s后面指定用户登录后所使用的shell,默认为/bin/bash
注:[/bin/bash]:指用户既能使用账号密码连接sftp,又能使用账号密码登录该Linux服务器;
[/sbin/nologin]:指用户只能使用账号密码连接sftp,不能使用账号密码登录该Linux服务器;
对于ftp、sftp、smtp等程序服务,一般都设置为[/sbin/nologin]。
2)创建父目录并授权
mkdir /home/sftp
chown root:mysftp /home/sftp
chmod 755 /home/sftp
3)创建子目录并授权
mkdir /home/sftp/tom
chown root:mysftp /home/sftp/tom
chmod 755 /home/sftp/tom
4)修改sshd_config配置文件:vi /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server 注释掉这句
并在文件尾添加:
Subsystem sftp internal-sftp
Match Group mysftp
ChrootDirectory /home/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
注:Subsystem sftp internal-sftp:指定使用sftp服务使用系统自带的internal-sftp;
Match Goup mysftp:用来匹配sftp组的用户;
ChrootDirectory /home/sftp/%u:用chroot将用户的根目录指定到/home/sftp/%u,%u代表用户名,这样用户就只能在/home/sftp/%u下活动。
ForceCommand internal-sftp:指定使用的sftp命令:internal-sftp。
5)现在已经可以通过tom账目密码连接或登录了,但在tom文件夹中还不能上传文件,所以需要再创建一个文件夹来供tom用户上传文件。
mkdir /home/sftp/tom/upload
chown tom /home/sftp/tom/upload
chmod 755 /home/sftp/tom/upload
6)编辑vi /etc/selinux/config
SELINUX=enforcing 修改为 SELINUX=disabled
7)重启sshd服务
service sshd restart
8)验证连接sftp
sftp tom@localhost
9)验证sftp文件传输
sftp tom@172.16.125.37
put /home/tool/tool.txt /upload
get /upload/tool.txt /home/liu