Есть ли способ заставить OpenSSH (или создать какой-либо прокси) перенаправлять одного пользователя на один компьютер, а другого пользователя на другой компьютер только по имени пользователя, которое он (или она) предоставил?
У меня следующая проблема: я собираюсь запустить GitLab в контейнере Docker и одновременно SSH-сервер на хост-машине. GitLab прослушивает SSH-соединения, но его интересует только "git" пользователь, распознающий клиентов по SSH-ключам. Итак, установка, которую я хотел бы создать, может быть любой из следующих:
Для ясности: контейнер Docker запускает мост, и он доступен с хоста по уникальному IP-адресу, отличному от IP-адреса хоста.
Аналогичный вопрос был задан в StackOverflow (https://stackoverflow.com/questions/8505445/setup-ssh-server-to-forward-connections), но не было ответа, который решал бы эту проблему - наиболее полезным был вариант, предлагающий настраиваемую оболочку, но я не нашел способа создать что-то подобное.
Туннелирование TCP-порта SSH настраивается клиентом ssh. На сервере вы можете ограничить конфигурацию туннелирования только с помощью permitopen=host:port
в authorized_keys.
Другой способ перенаправить трафик - использовать Netfilter / iptables с -m owner --uid-owner $UID
и цель DNAT.