Назад | Перейти на главную страницу

Мне нужно настроить sftp-сервер, который может использовать разные ключи и использовать разные каталоги для одного и того же входа в систему, в зависимости от используемого IP-адреса

У меня проблема, которую я не могу решить сам. Я пробовал погуглить, но не нашел удовлетворительного решения.
У меня есть сервер с тремя разными 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. Это не бесплатно, но выполняет свою работу.