У меня есть сервер 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