1.需求

搭建多账号SFTP,不同的用户只能够查看自己所属的目录 禁止SFTP账号通过SSH连接 SFTP 用户demo1、demo2,所属目录:/data/sftp/demo1、/data/sftp/demo2

2.操作步骤

创建目录

mkdir /data/sftp/{demo1,demo2} -p

创建用户组sftp

groupadd sftp
创建用户demo1、demo2

创建用户demo1、demo2

useradd -G sftp -d /data/sftp/demo1 -m  -s /sbin/nologin demo1
useradd -G sftp -d /data/sftp/demo2 -m  -s /sbin/nologin demo2

-G sftp :加入sftp用户组 -s /sbin/nologin:禁止用户ssh登录 -d /data/sftp/demo1:指定用户的根目录

 

修改密码

passwd demo1
passwd demo2

修改配置文件sshd_config

cp /etc/ssh/sshd_config  /etc/ssh/sshd_config.ori.20190531
vim /etc/ssh/sshd_config
#下面这行注释掉#Subsystem sftp /usr/libexec/openssh/sftp-server##后面加入
Subsystem sftp internal-sftp
#注意,以下要 放在 本文件的最后行,否则 root用户无法登陆
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp

说明 :   Match Group sftp 匹配sftp用户组中的用户   ChrootDirectory %h 只能访问默认的用户目录(自己的目录),例如 /data/sftp/demo1

重启ssh服务

systemctl restart sshd.service

设置目录权限

chown root:sftp /data/sftp/demo1/
chown root:sftp /data/sftp/demo2/

chmod 755 /data/sftp/demo1
chmod 755 /data/sftp/demo2

#设置用户可以上传的目录upload
mkdir /data/sftp/demo1/upload
mkdir /data/sftp/demo2/upload

chown -R demo1:sftp /data/sftp/demo1/upload/
chown -R demo2:sftp /data/sftp/demo2/upload/

关闭selinux

vim /etc/selinux/config

设置:
    SELINUX=disable

3.测试连接

测试SFTP功能

#登录sftp
sftp demo1@192.168.47.111
#进入upload目录
cd upload
#上传文件
put /root/nginx-1.15.12.tar.gz
#查看目录下的文件
ls
#下载文件
get nginx-1.15.12.tar.gz