2011-12-14 1 views
3

В моей сети в настоящее время есть компьютер, чем обрабатывает кучу IT-репозиториев, все на пользователе «git». Пользователи могут также зарегистрироваться на своих учетных записях для запуска других программ. В настоящее время они делают это на той же машине, что и сервер git. Я хотел бы сделать это на другом компьютере.Настройка ssh-сервера для переадресации соединений

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

Таким образом, [email protected] регистрируется на новом сервере, но [email protected] регистрируется на существующем сервере.

Все задействованные машины запускают/будут запускать ubuntu.

Я не хочу, чтобы пользователям приходилось вручную устанавливать туда git remotes для входа через новый компьютер. это не решение. Он должен быть бесшовным :)

+1

Это не вопрос, связанный с программированием, и поэтому он оффтопик на этом сайте. Вы должны спросить на http://unix.stackexchange.com или http://serverfault.com –

+1

@Let_Me_Be не согласны. Это подразумевает программное решение, поэтому оно не является оффтопическим. – lig

+0

@lig Это проблема с конфигурацией. –

ответ

1

Вы можете установить SHELL для пользователя git на свой собственный скрипт (в bash или сказать на python). Это будет подключаться к старому серверу и будет выступать в качестве прокси для этих двух соединений. Из-за этого вам нужно иметь дело с открытыми ключами пользователей для пересылки аутентификации.

+1

Мне это нравится, я должен дать ему попробовать и посмотреть, работает ли он, я думаю, я могу попробовать просто написать сценарии bash, которые будут подключаться к новому ssh-соединению. Немного поиска, чтобы узнать, как передать ключ. – mcfedr

0

Хотя @lig предлагает серверное решение, требующее написания собственного скрипта, вы всегда можете настроить клиентскую конфигурацию, которая будет работать из коробки. Если у вас есть последняя версия OpenSSH на рабочем столе (есть параметр -w), вы можете сделать это в вашем файле ~/.ssh/config:

Host git.ourserver.com 
User git 
ProxyCommand ssh -W the.git.server:22 ourserver.com 

Когда пользователь делает «SSH git.ourserver.com» это будет сначала перейдите на наш сервер, а затем перейдите к соединению. Если оба сервера используют один и тот же открытый ключ для аутентификации, и вы используете ssh-agent (или ssh-пароль без пароля), вам не придется дважды проверять подлинность.

Этот должен работать, когда вы нажимаете/тянете через git, пока ваш «удаленный» ваш git точно соответствует «Host» в вашем файле ~/ssh/config.

+0

Это кажется сложнее, чем изменение git remote url для меня. – lig

+0

Я прочитал его ситуацию, и это звучит так: он направляет порт 22 на свой маршрутизатор на один хост, который он больше не хочет принимать git. Чтобы использовать тот же IP/порт для ssh, чтобы перейти на другой сервер за IP-адресом маршрутизатора, этот хост по умолчанию для ssh должен перенаправить соединение. –

+0

Я использовал этот стиль конфигурации ssh некоторое время, но в этом случае это не решение, потому что я хочу, чтобы пересылка была прозрачной для пользователей. – mcfedr

Смежные вопросы