У меня проблема, которую я не могу решить сам. Я пробовал погуглить, но не нашел удовлетворительного решения.
У меня есть сервер с тремя разными IP-адресами (А,B,C), а логин пользователя позволяет сказать "пользователь".
Мне нужно настроить сервер sftp, который: при подключении к IP A сервер SFTP будет объявлять себя с помощью ключа A, при подключении к B, объявляет себя с помощью ключа B и так далее.
Но это еще не конец проблемы, я хочу ее настроить, поэтому, когда клиент пытается подключиться к «пользователю» с IP A, он будет использовать каталог A для доступа к файлам пользователя, при подключении к IP B он будет используйте direcotry B, а при подключении к IP C, тогда он будет использовать каталог C. Я подумал о proftpd с включенным модулем sftp, но я застрял на том, как настроить каталоги, которые будут доступны с логином "user". например, для
если клиент пытается получить доступ к файлу: пользователь @ A: file.dat
настоящее имя пути будет directoryA / file.dat
если клиент пытается получить доступ: пользователь @ B: file.dat
реальное имя пути будет каталогB / file.dat
и так далее ... Теперь вопрос, как его настроить?
Ваш 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 howto).
Имя пользователя «пользователь» будет немного отличаться для каждого из ваших виртуальных хостов. Для сервера A «пользователь» будет членом группы A. Для сервера B «пользователь» будет членом группы B. А для сервера C «пользователь» будет членом группы C. Если вы этого не хотите, для использования ограничений chroot по любой причине вы можете использовать DefaultChdir
вместо этого директива; это просто помещает аутентифицированного клиента в запрошенный каталог в начале своего сеанса после аутентификации.
Надеюсь это поможет!
Вы можете попробовать Sysax Server. Это не бесплатно, но выполняет свою работу.