目标:sftp / scp只能访问,而不需要linux用户。
我想为10个人提供10个sftp / scp目录。 我们称之为“虚拟账户”
我不想为每个人创buildLinux用户。
我想创build一个linux用户(backup_user)。 在他的家目录将是10个目录。 为每个“虚拟帐户”一个目录。
每个虚拟帐户只能看到自己的文件,而不能看到来自其他虚拟帐户的文件。
我想使用这里提供的解决scheme: https : //serverfault.com/a/88864/90324
总之,在authorized_keys文件中将有10行:
~backup_user/.ssh/authorized_keys: no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command=\ "scp -v -r -d -t ~/CONTENT" ssh-rsa AAAAMYRSAKEY...
我可以通过python脚本来改善,而不是使用硬编码的“scp -v …”。
我想支持scp和sftp。
有没有一种方法可以确保每个虚拟帐户都不能脱离监狱?
顺便说一下:使用authorized_keys和“强制命令”的想法只是我目前的策略。 如果每个总体目标都有更好的方法,那么请告诉我:-)
我们正在运行一个OpenSSH服务器。 如果可能,我想坚持下去。
我们find了不同的解决scheme:http。 我们开发了一个小的通用文件http上传: https : //github.com/guettli/tbzuploader反馈是欢迎的
这应该是一个评论,但它有点长。
你没有充分描述你的目标。 虽然我可以作出一些推论,但推断这个build议是徒劳的。
虽然有一些工具可以让你创build一个独立于底层用户的服务器,但是这些工具设置起来很麻烦,并且限制了它们与其他function集成的能力。
使用基于密钥对的login设置10个用户并且不能访问shell将会简单得多。 但是你唯一明确规定的约束是“不想为每个人创buildlinux用户” – 但是你没有提供解释原因。 OTOH表示您希望使用基于在操作系统中供应用户的方法。
我认为你想要什么(无需创build本地用户访问)是不可能的与sshd。
相反,您可以使用proftpd与虚拟用户(例如,来自MySQL数据库)+ SFTP / SCP模块。
你想要做什么是比较棘手的。 如果你不想使用自制的chroot-shoot-in-your-foot工具,你必须坚持使用ssh内build的chroot,而chroot又被限制在用户的主目录(%h)=或其他任何你可以在sshd_config中指定。 至less我没有find在authorized_keys文件中设置chroot目录的方法,这可以解决这个问题。
所以这一切都取决于你的意思是“我不想为他们每个人创buildLinux用户”。 如果你只是不想要一个/ etc / passwd项,你可能是PAM能够为你validation“虚拟”用户的方法之一。 你可以使用一个数据库(当然对10个用户来说是过度的),使用额外的类似passwd的文件,berkley db文件。例如,这些虚拟用户可能被限制为服务sftp或任何你想要的。 如果他们的虚拟主目录被设置为你想要的用户backup_user的子目录,也许这就是你想要的。 好 – 差不多。 如果你在authorized_keys中指定了一个命令,sftp会要求input密码 – 我猜你不想要那个。
如果你的每个用户都使用2个ssh密钥,一个用于scp,另一个用于sftp,这将会起作用。 但是,您必须模仿远程scp行为的行为,在authorized_keys文件中指定一个脚本,该脚本读取环境variablesSSH_ORIGINAL_COMMAND。 无论如何,有点烦躁。
ssh不支持virutal用户。 这可以通过PAM来实现,但是需要编写代码。
如果你可以添加本地用户,你可以试试这个工具
https://github.com/pymumu/jail-shell
它将用户关进一个特定的目录。