![为多个用户设置 ssh 和 sftp](https://linux22.com/image/821758/%E4%B8%BA%E5%A4%9A%E4%B8%AA%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE%20ssh%20%E5%92%8C%20sftp.png)
我正在尝试设置一个 sftp 服务器,但在让它按我希望的方式工作时遇到了问题。
我的服务器有两个硬盘,第一个用于操作系统,其中包含所有用户的主目录。我的第二个驱动器包含我想要与特定用户共享的所有数据。
我想阻止用户(除了我自己)通过 ssh 进入服务器,并且我希望所有用户能够使用 sftp 在我的“数据”驱动器之间传输数据。
限制 ssh 访问很容易。我创建了组“ssh_users”,将我的帐户添加到其中,并将 AllowGroups ssh_users 添加到 sshd_config 文件中。
让 sftp 按照我的意愿工作一直很困难。我以为将用户 chroot 到数据驱动器会起作用,但也许我没有正确设置权限?
我该怎么做才能让它正常工作?谢谢
答案1
我前段时间写过一篇有关这个的文章:http://en.positon.org/post/SFTP-chroot-rsync
我认为你需要的/etc/ssh/sshd_config
是:
# we use openssh internal sftp
# because /usr/lib/openssh/sftp-server won't be available in chroot
Subsystem sftp internal-sftp
Match group sftp
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
您可以根据需要更改 ChrootDirectory,但是,chroot 目录必须由 root 拥有,并且用户不能写入。这是 OpenSSH 开发人员的安全限制。
另外,仔细检查/var/log/auth.log
SSH 连接问题。
答案2
当您有可以使用 ftps 的本地用户时,您可以将数据驱动器挂载到他们的主目录中,然后 chroot 他们的主目录。
mount --bind /data/drive /home/user/data
chroot_local_user=YES
通过此设置,用户可以访问数据驱动器,但无法列出主驱动器上的文件系统。
如果您愿意,您可以通过将 ftp 用户添加到新组并授予该组对数据驱动器的某些权限来限制他们的权限。
答案3
查看本文并将其与要共享的文件夹的组权限相结合。这样就可以了。