sftp采用的是ssh加密隧道,安装性方面较ftp强,而且依赖的是系统自带的ssh服务,不像ftp还需要额外的进行安装。
1. 创建sftp组
使用groupadd sftp创建用户组,创建完成之后使用cat /etc/group命令组的信息
groupadd sftp
cat /etc/group
2. 创建sftp用户
创建一个sftp用户uftp01 并加入到创建的sftp组中,同时修改uftp01 用户的密码.
useradd -g sftp -s /bin/false uftp01
passwd uftp01
3. 新建用户目录
新建/data/sftp/uftp01目录,并将它指定为uftp01组用户的home目录
mkdir -p /data/sftp/uftp01
usermod -d /data/sftp/uftp01 uftp01
usermod 命令详解
usermod可用来修改用户帐号的各项设定:
usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]
参数说明:
- -c<备注> 修改用户帐号的备注文字。
- -d登入目录> 修改用户登入时的目录。
- -e<有效期限> 修改帐号的有效期限。
- -f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。
- -g<群组> 修改用户所属的群组。
- -G<群组> 修改用户所属的附加群组。
- -l<帐号名称> 修改用户帐号名称。
- -L 锁定用户密码,使密码无效。
- -s
修改用户登入后所使用的shell。 - -u
修改用户ID。 - -U 解除密码锁定。
更改登录目录
usermod -d /home/hnlinux root
改变用户的uid
usermod -u 777 root
4. 编辑配置文件
编辑配置文件/etc/ssh/sshd_config,vi /etc/ssh/sshd_config
将如下这行用#符号注释掉
**# Subsystem sftp /usr/libexec/openssh/sftp-server **
并在文件最后面添加如下几行内容然后保存
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
5. 设置Chroot目录权限
chown root:sftp /data/sftp/uftp01
chmod 755 /data/sftp/uftp01
6. 新建文件上传目录
新建一个目录供stp用户yuante01上传文件,这个目录所有者为yuante01所有组为sftp,所有者有写入权限所有组无写入权限
mkdir /data/sftp/uftp01/upload
chown uftp01:sftp /data/sftp/uftp01/upload
chmod 755 /data/sftp/uftp01/upload
7. 关闭selinux并重启sshd服务
setenforce 0
systemctl restart sshd.service 不能用
service sshd reload 好用
8. 服务验证
在其他服务器上进行验证,sftp 用户名@ip地址
sftp uftp01@ip
查看命令:
?
9.FileZilla客户端验证
QF_qingfeng1024