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

SSH-шлюз со всем конфигом на шлюзе?

У меня есть сервер ubuntu, на котором запущено несколько контейнеров LXD - ни у одного из них нет общедоступных IP-адресов, но они доступны в Интернете через обратный прокси-сервер для HTTP.

Эти контейнеры принадлежат разным людям, и я хотел бы, чтобы они могли входить в контейнер через SSH. Я не хочу, чтобы пользователи могли пробовать пароли в контейнерах, отличных от их собственного, и я не хочу, чтобы пользователям приходилось самостоятельно настраивать SSH-туннель / шлюз.

Поэтому мне интересно, есть ли способ настроить шлюз SSH, чтобы на основе ключа пользователя или имени пользователя проксирование было автоматизировано для них через шлюз.

Эта старая статья - http://quark.humbug.org.au/publications/ssh/ssh-tricks.html - похоже, подразумевает, что возможно что-то вроде этого: «Шлюз SSH работает, принудительно отправляя ssh на другой хост в качестве конкретного имени пользователя на основе ключа ssh».

Однако я не могу найти никакой другой информации об этом ... Можно ли это сделать?

В этой статье используется относительно малоиспользуемая функция openssh и ~/.ssh/authorized_keys формат файла, а именно: возможность настройки параметров / ограничений, которые будут установлены при использовании определенной пары ключей для входа в систему.
Один из таких вариантов - command="/path/to/command [-o options]" это гарантирует, что вместо обычной интерактивной оболочки входа будет выполнена другая настраиваемая команда.

Установив для этой пользовательской команды значение command="ssh user@container" фактически произойдет то, что когда сеанс ssh login@host успешно с определенной парой ключей, будет запущен сеанс ssh, который представляет запрос пароля (и доступ) к user счет по конкретному container.

Самый простой - настроить для этого одну учетную запись на своем хосте.
Вы должны попросить каждого клиента предоставить вам свой открытый ключ.
Если у клиентов есть несколько контейнеров, им потребуется одна пара ключей для каждого контейнера.

Вы даете указание всем своим клиентам использовать свою пару ключей для аутентификации входа в 1 учетную запись, например access@yourhost.example.com

В домашнем каталоге /home/access/.ssh/authorized_keys будет одна строка для каждого клиента / public_key

command="ssh user1@container1" ssh-rsa AAAAB5..base64_encoded_key_customer1... COMMENT
command="ssh user2@container2" ssh-rsa AAAAB5..base64_encoded_key_customer2... OTHER-COMMENT