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
-G sftp :加入sftp用户组useradd -G sftp -d /data/sftp/demo1 -m -s /sbin/nologin demo1 useradd -G sftp -d /data/sftp/demo2 -m -s /sbin/nologin demo2
-s /sbin/nologin:禁止用户ssh登录
-d /data/sftp/demo1:指定用户的根目录 ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20190531210808199.png) -
修改密码
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命令详见博文:https://blog.csdn.net/cen50958/article/details/89503723#登录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
demo2账号同理
-
测试不能使用SSH功能
ssh demo1@192.168.47.111