我需要设置一个 sftp 服务器,该服务器可以使用不同的密钥,并根据所使用的 IP 对同一登录使用不同的目录

我需要设置一个 sftp 服务器,该服务器可以使用不同的密钥,并根据所使用的 IP 对同一登录使用不同的目录

我遇到了一个问题,我自己无法解决。我尝试用谷歌搜索,但没有找到令人满意的解决方案。
我有一台服务器,可以使用 3 个不同的 IP 地址(AC)并且用户登录让我们说“用户“。
我需要设置一个 sftp 服务器:当连接到 IP A 时,SFTP 服务器将使用密钥 A 宣布自己,当连接到 B 时,使用密钥 B 宣布自己,依此类推。
但这并不是问题的结束,我想设置它,所以当客户端尝试使用 IP A 连接到“用户”时,它将使用目录 A 来访问用户文件,当连接到 IP B 时,它将使用目录 B,当连接到 IP C 时,它将使用目录 C。我想到 proftpd 开启了 sftp mod,但我不知道如何配置目录,这些目录将通过登录“用户”进行访问。例如,
如果客户端尝试访问文件: 用户@A:文件.dat
真正的路径名是目录A/文件.dat
如果客户端尝试访问: 用户@B:文件.dat
真正的路径名是目录B/文件.dat
等等...现在的问题是,如何设置?

答案1

我认为你proftpd.conf对此的看法应该是这样的:

<IfModule mod_sftp.c>
  # Virtual host configuration for server A
  <VirtualHost a.a.a.a>
    Port 22
    SFTPEngine on
    SFTPHostKey /path/to/key/A

    # Restrict members of group A to this directory
    DefaultRoot /path/to/directoryA groupA
  </VirtualHost>

  # Virtual host configuration for server B
  <VirtualHost b.b.b.b>
    Port 22
    SFTPEngine on
    SFTPHostKey /path/to/key/B

    # Restrict members of group A to this directory
    DefaultRoot /path/to/directoryB groupB
  </VirtualHost>

  # Virtual host configuration for server C
  <VirtualHost c.c.c.c>
    Port 22
    SFTPEngine on
    SFTPHostKey /path/to/key/C

    # Restrict members of group C to this directory
    DefaultRoot /path/to/directoryC groupC
  </VirtualHost>
</IfModule>

使上述工作成功的关键部分是使用可选的组参数指令DefaultRoot(有关更多信息,我建议Chroot 指南)。

用户名“user”的配置对于每个虚拟主机都略有不同。对于服务器 A,“user”将是组 A 的成员。对于服务器 B,“user”将是组 B 的成员。而对于服务器 C,“user”是组 C 的成员。如果您出于某种原因不想使用 chroot 限制,则可以改用指令DefaultChdir;这只会在经过身份验证的客户端通过身份验证后,将其放置在会话开始时请求的目录中。

希望这可以帮助!

答案2

您可以尝试 Sysax Server。它不是免费的,但可以完成工作。

相关内容