欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

如何为 sftp (sshd) 设置虚拟用户以访问特定的子目录? 有大用

问过 
5年前修改
查看 7k 次
2个

我尝试使用 sshd 和/或 pam 为 sftp 设置虚拟用户。

我的文件夹结构如下所示:

/
|-- var
|   +-- www
|       +-- site1
|           +-- folder_1
|           +-- folder_2
|       +-- site2
|           +-- folder_1
|           +-- folder_2

每个站点都有一个 Linux 用户(例如 site1、site2)和同一组(site1、site2),其中主目录是 eg /var/www/site1umask 是 0022,例如所有文件和(子)文件夹site1都有UID=site1anf GID=site1,这不应该改变。

我能够设置 sshd 以便每个 Linux 用户都获得他的主目录,因为 sftp 根文件夹是例如/var/www/site1用户site1配置/etc/ssh/sshd_config看起来像这样
(只有最后几行,其余的是默认配置):

UsePAM yes
Subsystem sftp internal-sftp
Match User *,!root
    ChrootDirectory %h
    ForceCommand internal-sftp -u 0022
    AllowTcpForwarding no

现在我想添加一个虚拟用户(如果不需要,则没有新的 Linux 用户或组),其中 sftp 根文件夹例如/var/www/site1/folder1用于 sftp 用户 eg site1_folder1此用户应该是该用户的子级site1并使用相同的 UID 和 GID,但只能访问他的子目录。

我必须如何更改我的配置,我可以在哪里添加虚拟用户?

我在 Ubuntu 16.04 LTS、LAMP 服务器上需要这个

  • OpenSSH 使用 PAM(sshd_config 文件指令 UsePAM)PAM。您只需要学习如何使用它设置 pam-libpsql - 这应该是一个小时左右。所以是的,你可以有虚拟用户,但你可能需要在你的数据库中为每个用户添加 UID/GUID 字段。如果 HellionWisp 所说的是真的,您将永远无法设置 LDAP 或任何外部形式的身份验证/授权。看看 /etc/pam.d/sshd - 但我不建议在远程主机上弄乱它,先在本地 VM 中测试它!您实际上可以寻找 SSH ldap auth 的提示!  2018 年 3 月 27 日 14:09

2 个回答

2个

ProFTPd 允许您创建虚拟 FTP/SFTP 用户并将它们映射到真实用户的 uid 和 gid。

0

没有虚拟用户这样的东西,任何连接的人都需要一个用户帐户,你可以 chroot 将他们关在他们各自的主目录中。

您的答案

来自  https://askubuntu.com/questions/970045/how-to-setup-virtual-users-for-sftp-sshd-with-access-to-a-specific-sub-directo


  https://www.mybluelinux.com/proftpd-server-with-virtual-users-and-in-sftp-mode/



问过 
查看 11,000 次
8个

我有一个 FTP 服务器(Mac OS X,但不是服务器版本)设置了一段时间,用户是虚拟的,即它们不是服务器操作系统中的实际用户帐户,而是 FTP 服务器软件处理的帐户 - - 对于操作系统来说,它们看起来都像ftp用户帐户。我想停用 FTP 服务器软件,改用 SFTP。

有没有办法设置 SFTP/SSH 以便我可以创建虚拟用户并同时将它们沙盒化?

我想要虚拟用户的原因是因为我不时添加和删除帐户,使用适当的用户帐户这样做往往会变得混乱,而且我不知道有什么好的方法可以将它们沙盒化。总会留下一些文件,每个用户都有自己的用户目录(只有当他们坐在机器前面时实际登录到机器时才会有很多文件相关),当帐户被删除时,这些文件被隔离,所以你有自己手动删除它,等等。

4 个回答

5个

通常通用的 Unix 对此的回答是“PAM”。如果您想要普通的旧 OpenSSH SSHD 来处理您的 SFTP,您需要将某些东西插入 SSHD 的 PAM 堆栈 (/etc/pam.d/sshd),它可以完成您需要的工作并省去您不需要的东西。这可能是一个通用目录服务器(可能是 LDAP),它将所有虚拟用户映射到一个主目录,并为他们提供一种受限或 scponly 的 shell。

如果您想查看也可以执行 FTP-ssl(与 SFTP 不同)的 FTP 服务器,像 Pure-ftpd 或 vsftp 这样的好 ftp 服务器可以做到这一点。FTP-ssl 服务器具有更简单的虚拟用户支持。

http://www.bsdguides.org/guides/freebsd/networking/pure-ftpd_virtual_users.php

0

如果您对商业产品持开放态度,Van Dyke Software 的 VShell Server 可在 Unix/Linux/Windows 上使用,支持具有 SSH 和 SFTP 协议的虚拟用户(多个后端):

VShell 服务器

0

JSCAPE SFTP Server 是一个商业的、跨平台的服务器,可以做你想做的事。

http://www.jscape.com/

我知道,听起来我为他们工作,但我不是 :)

0

sftpgo支持虚拟用户等等

您的答案


来自 https://stackoverflow.com/questions/39135/can-you-have-virtual-users-using-an-sftp-server



使用虚拟用户和 chroot 的 openssh




问过 

浏览 3k 次
3个

我正在寻找一种运行 opensshd 的方法,以非特权用户的身份向用户提供 sftp,例如在端口 8022 上。这个 opensshd 应该采用类似于客户密码文件的方式,其中可以包含用户名、密码等信息,并将所有内容放入每个用户专用公共根目录中的文件夹。如果可能的话,如何使用 opensshd 实现这一点?

为了更清楚,我需要:

  • opensshd 在某个端口上以非 root 用户身份运行 >1024,带有自定义 sshd-config 文件

  • 可以为 openssh 定义用户,这些用户不是当前系统的系统用户,例如由本地文本文件提供,理想情况下没有 PAM 交互

  • 此用户的某种更改根因此user1无法访问user2上传和下载期间的数据。

我找到了一些为 openssh 定义 chroot 的示例,但不支持没有 PAM 的虚拟用户。现在我想知道这是否可能。

1 个回答

1个

Openssh 不支持虚拟用户。它只能使用passwd或进行身份验证PAM如果您正在搜索虚拟用户,您应该试一试vsftpd

您的答案

来自  https://superuser.com/questions/1080616/openssh-with-virtual-users-and-chroot






普通分类: