我遇到了一个问题,我自己无法解决。我尝试用谷歌搜索,但没有找到令人满意的解决方案。
我有一台服务器,可以使用 3 个不同的 IP 地址(A,乙,C)并且用户登录让我们说“用户“。
我需要设置一个 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。它不是免费的,但可以完成工作。