sftp采用的是ssh加密隧道,安装性方面较ftp强,而且依赖的是系统自带的ssh服务,不像ftp还需要额外的进行安装。

1. 创建sftp组

使用groupadd sftp创建用户组,创建完成之后使用cat /etc/group命令组的信息

  1. groupadd sftp
  2. cat /etc/group

image.png
image.png

2. 创建sftp用户

创建一个sftp用户uftp01 并加入到创建的sftp组中,同时修改uftp01 用户的密码.

  1. useradd -g sftp -s /bin/false uftp01
  2. passwd uftp01

image.png

3. 新建用户目录

新建/data/sftp/uftp01目录,并将它指定为uftp01组用户的home目录

  1. mkdir -p /data/sftp/uftp01
  2. usermod -d /data/sftp/uftp01 uftp01

image.png

usermod 命令详解

usermod可用来修改用户帐号的各项设定:

  1. 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 解除密码锁定。

更改登录目录

  1. usermod -d /home/hnlinux root

改变用户的uid

  1. usermod -u 777 root

4. 编辑配置文件

编辑配置文件/etc/ssh/sshd_config,vi /etc/ssh/sshd_config

  1. 将如下这行用#符号注释掉
  2. **# Subsystem sftp /usr/libexec/openssh/sftp-server **
  3. 并在文件最后面添加如下几行内容然后保存
  4. Subsystem sftp internal-sftp
  5. Match Group sftp
  6. ChrootDirectory /data/sftp/%u
  7. ForceCommand internal-sftp
  8. AllowTcpForwarding no
  9. X11Forwarding no

image.png

5. 设置Chroot目录权限

  1. chown root:sftp /data/sftp/uftp01
  2. chmod 755 /data/sftp/uftp01

6. 新建文件上传目录

新建一个目录供stp用户yuante01上传文件,这个目录所有者为yuante01所有组为sftp,所有者有写入权限所有组无写入权限

  1. mkdir /data/sftp/uftp01/upload
  2. chown uftp01:sftp /data/sftp/uftp01/upload
  3. chmod 755 /data/sftp/uftp01/upload

7. 关闭selinux并重启sshd服务

  1. setenforce 0
  2. systemctl restart sshd.service 不能用
  3. service sshd reload 好用

image.png

8. 服务验证

在其他服务器上进行验证,sftp 用户名@ip地址
sftp uftp01@ip
image.png
查看命令:

  1. ?

image.png
附件上传
image.png

9.FileZilla客户端验证

image.png
QF_qingfeng1024