创建用户组
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