网上大部分文章都是人云亦云,能把为什么这么设置讲得清楚的,可以参考这两篇
https://blog.csdn.net/qq_15000459/article/details/108108625
https://www.maixj.net/ict/ssh-sftp-21993
我的需求是可以设置多个账号,可以共享访问目录,可以看到某个文件是谁创建的
首先要创建用户组
groupadd sftp
然后在这个组内添加用户
useradd -g sftp -s /sbin/nologin -M sftp_test
useradd -g sftp -s /sbin/nologin -M sftp_app
-g用于指定用户组,-s用于指定login shell,用/sbin/nologin则不允许该用户ssh登录。-M表示不创建该用户的home目录
接着给这些用户生成密码
passwd sftp_test
接着,准备ftp的根目录。我用的是/home/sftp。按照规则,这个根目录/home/sftp拥有者只能是root,而且权限最高位755。如果这个目录是用root用户创建的,则默认就是满足的。为了给sftp用户传文件,只能在/home/sftp下面再建一层子目录,把这层子目录的拥有者改为sftp组的某个用户,并把权限改为775,让组内其他成员也可以读写
mkdir -p /home/sftp/upload
cd /home/sftp
chown sftp_test:sftp upload
chmod 775 upload
再然后,就是修改sshd的配置了。vi /etc/ssh/sshd_config,注释掉
Subsystem sftp /usr/libexec/openssh/sftp-server
一行,然后加上
Subsystem sftp internal-sftp #配置开启sftp
Match Group sftp #配置允许访问组
ChrootDirectory /home/sftp #配置组用户登录的根目录
X11Forwarding no
AllowTcpForwarding no
PermitTTY no
重启sshd
systemctl restart sshd