Доступ к репозиторию Subversion с 2 переходами по протоколу svn + ssh

Мой сервер Ubuntu Subversion не доступен напрямую из Интернета, 192.168.1.2

Моя общедоступная машина Ubuntu доступна через DMZ по адресу 192.168.1.1.

Я настроил переадресацию портов с 192.168.1.1:3906 на 192.168.1.2:3906, но я понятия не имею, как это будет работать с svn + ssh, поскольку для доступа к моему серверу Subversion требуется один дополнительный переход

edit: Для тех, кто сталкивается с той же проблемой, моя путаница возникла из-за того, что я пытался перенаправить на свой сервер SVN (запускал демон на порту '3906'), но доступ к вашему серверу SVN через SSH полностью отличается от доступа к вашему серверу SVN, на котором запущен демон (3906). Вы должны относиться к этому как к типичному ssh-соединению. Оба метода ниже работали после того, как я отредактировал свои настройки.


person ironic_username    schedule 29.10.2009    source источник


Ответы (2)


Поместите что-то вроде этого в свой файл .ssh / config:

Host subversionserver
        Host=192.168.1.1
        ProxyCommand = ssh 192.168.1.1 /usr/local/bin/nc -w 60 192.168.1.2 %p
        ForwardX11 = no
        User = myusername
        ForwardAgent = yes

Затем вы сможете подключиться к своему ssh-серверу с помощью всего:

ssh subversionserver

Обычно вы входите в свой общий ящик и запускаете команду netcat, как только войдете. Ваше желаемое SSH-соединение с сервером Subversion будет проходить через соединение netcat.

Очевидно, вам понадобится где-нибудь на вашем компьютере netcat.

Версия в моем файле .ssh / config имеет подстановочный знак Host и использует% h в команде netcat. Очень полезно, когда вы хотите прокси-сервер для всех ящиков в производственной среде, к которым вам нужно пройти через DMZ, чтобы добраться до.

person Epsilon Prime    schedule 29.10.2009
comment
Небольшая опечатка: .12 должно быть .2 - person Grumdrig; 29.10.2009
comment
Я предполагаю, что это входит в .sssh / config внешней машины, пытающейся войти. Если да, то когда вы запускаете ssh subverionserver, как он узнает местоположение? (я ничего не вижу о локальном или IP-адресе в конфигурации вашего хоста) - person ironic_username; 29.10.2009
comment
Я использовал IP-адреса, которые вы указали для своих машин (в данном случае 192.168.1.1). Вы можете заменить их на настоящие имена хостов. Внешний компьютер должен знать внешнее имя хоста, а общедоступный ящик должен знать IP-адрес сервера подрывной деятельности. - person Epsilon Prime; 29.10.2009

Ваш sshd прослушивает порт 3906 (а не стандартный порт 22)? В таком случае вы сможете подключиться, например, к

   $ svn co svn+ssh://MYHOST:3906/svn/trunk/whatever

Если нет, перенаправьте порт 3906 на .1 на 22 на .2.

Или перенаправьте порт с 22 на .1 на 22 на .2, если вам не нужно использовать ssh в другом месте вашей интрасети.

person Grumdrig    schedule 29.10.2009
comment
Если я правильно понимаю переадресацию портов, я получаю доступ к своему общедоступному ПК с работы через ssh-порт 22, поэтому я не уверен, что смогу переадресовать его на .2, может быть, если я добавлю 3906 к своим портам прослушивания sshd, тогда это будет перенаправлено? Является - person ironic_username; 29.10.2009