创建用户组
groupadd mygroup
创建用户并加入组
useradd -G mygroup -s /sbin/nologin myuser
-s 禁止用户 ssh 登陆
-G 加入 sftp 用户组
设置用户密码
passwd myuser
建立用户目录
cd /usr sudo mkdir myhome cd myhome sudo mkdir myuser
修改ssh文件配置
vim /etc/ssh/sshd_config
找到如下这行,并注释掉
#Subsystem sftp /usr/libexec/openssh/sftp-server
添加如下几行
Subsystem sftp internal-sftp Match Group mygroup X11Forwarding no AllowTcpForwarding no ChrootDirectory /usr/myhome ForceCommand internal-sftp
保存,退出,重启ssh
systemctl restart sshd.service
设置权限
chown root:root /usr/myhome chgrp -R mygroup /usr/myhome chmod -R 755 /usr/myhome chown -R myuser:mygroup /usr/myhome/myuser chmod -R 755 /usr/myhome
测试登录
sftp myuser@localhost
问题汇总
1、登录时报错如下:
Connection to 127.0.0.1 closed by remote host. Couldn't read packet: Connection reset by peer
解决方法:
目录权限设置上要遵循2点:
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是755。
如果不能遵循以上2点,即使是该目录仅属于某个用户,也可能会影响到所有的SFTP用户。
chown root:root /usr/myhome chmod 755 /usr/myhome
参考:
https://learnku.com/articles/22673
https://www.92ez.com/?action=show&id=23452