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

Перенаправить трафик ssh для одного пользователя через другой порт

Возможна ли такая конфигурация:

В результате команда ssh git@host даст тот же результат, что и ssh -p 2222 git@host.

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

Редактировать:

Причина в том, что я настроил сервер gitolite в контейнере Docker, поэтому в конце у меня есть демон ssh, который прослушивает порт 2222 для целей git. Кроме того, у меня есть «обычный» демон ssh, который прослушивает порт 22 (и я хочу его оставить).

Конечно, я могу получить доступ к серверу git через порт 2222 (если я открою его извне), но мне было интересно, могу ли я использовать «обычный» ssh-сервер с удаленного компьютера, а затем локально перенаправить его на ssh «git» для Пользователь git.

Так что для пользователя git трафик будет примерно таким:

client <==> 22:server:2222:git_container

Настройте свой обычный SSH-сервер для прослушивания нестандартного порта. Затем вы можете настроить gitolite на использование теперь свободного порта 22.

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

Простая переадресация портов TCP не может этого сделать: имя пользователя упоминается только далее в протоколе SSH, поэтому, если вы настаиваете на том, чтобы начать с ssh git@host, то должно быть два полных подтверждения аутентификации SSH. Я не знаю универсального SSH-прокси, который мог бы делать это прозрачно. Вы можете автоматизировать серверную часть второго перехода, например создав сценарий оболочки ssh -p 2222 localhost оболочка пользователя на внешнем хосте. Но это было бы несовместимо с множеством приятных льгот SSH, таких как переадресация портов, sftp, scp, ...

Лучше всего настроить клиентскую часть. Например. в ~ / .ssh / config

Host git_host
    Hostname host
    Port     2222
    Username git

а потом ssh git_host (вместо того ssh git@host).

Если вам сначала нужно пройти через внешний хост (например, потому что у вас нет прямой видимости порта 2222), вы можете использовать эти уловки здесь, например

Host git_host
    Hostname host
    Username git
    ProxyCommand ssh -q git@host nc -q0 localhost 2222

(может быть не на 100% правильным, поиграйте с опциями)