SVN более 2 туннелей SSH - PullRequest
4 голосов
/ 21 ноября 2011

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

Вот что я хочу сделать:

Я хочу оформить svn-проект на моем Live-сервере, но svn-сервер недоступен в Интернете. Поэтому мне нужно подключиться через туннель SSH к основному сетевому серверу, затем к серверу SVN, а затем извлечь файлы на сервер Live

Вот некоторые фиктивные настройки для наглядности:

  1. Живой сервер: (eth0) 10.123.210.123
  2. Сетевой сервер: (eth0) 10.89.123.123 и (eth1) 192.168.1.1
  3. Сервер SVN: (eth0) 192.168.1.8

Все серверы аутентифицируются с помощью файлов ключей на порту 9222, и на сервере есть пользователь-администратор с действительным ключом. Таким образом, администратор может войти на каждый сервер практически с любого сервера, Live не может напрямую подключиться к SVN.

Так что в соответствии с @ epsilon-prime в вышеупомянутом посте я должен установить /home/admin/.ssh/config на сервере Live с

Host mysubversionserver
        HostName = 10.89.123.123
        ProxyCommand = ssh 192.168.1.1 /usr/local/bin/nc -w 10 192.168.1.8 %p
        ForwardX11 = no
        User = admin
        ForwardAgent = yes

Помимо того, что я не могу подключиться с этой настройкой, я не очень понимаю, как это поможет мне добраться до сервера Subversion. Когда я использую этот SSH, я на сервере Subversion, но мне нужно быть на Live сервере с этим туннелем .... или я просто упускаю что-то действительно очевидное?

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

Итак, после долгого чтения и дополнительного чтения я, наконец, нашел некоторые объяснения для своих вопросов и понял, что этот конфиг не будет работать, а скорее, что @Rup был прав, хотя его синтаксис был немного неправильным.

Чтобы закрыть вопрос в любом случае и получить некоторую полезную информацию для других поисковых душ, вот правильный способ создания туннеля с файлами конфигурации в linux

Host FireWallServer
        HostName <FireWall Server IP>
        User admin
        IdentityFile ~/.ssh/id_rsa
        PasswordAuthentication no
        Compression yes
        ForwardX11 no

Host SVNServer
        ProxyCommand ssh FireWallServer nc <SVN Server IP> %p
        ForwardAgent yes

Ваш первый друг будет man ssh_config , поскольку он содержит большую часть необходимой вам информации. Хорошее объяснение, которое я нашел на Прозрачный Multi-hop SSH Таким образом, окончательным лучшим решением было создать туннель для локального порта:

ssh -L 9223:<SVN Server IP>:80 admin@<FireWall Server IP>

Теперь откройте другой терминал и выполните svn-запрос в этом туннеле:

svn info http://localhost:9223/<path to your svn repo>

Пара должна иметь , однако, требуется для этого способа работы:

  1. Все серверы должны быть настроены на прием ssh через порт 9222 для пользователя admin с помощью ssh_key
  2. На всех серверах должен быть настроен демон ssh для использования одного и того же порта
  3. SVN должен быть настроен для запуска через Apache с mod_dav

Надеюсь, это кому-нибудь пригодится :)

0 голосов
/ 21 ноября 2011

Чтобы SVN работал через прокси-сервер , вам, вероятно, понадобятся специальные настройки в файле конфигурации subversion на Live-сервере, например, в ~/.subversion/servers:

[global]
http-proxy-host=10.89.123.123
http-proxy-port=9222

В вашем случае прокси-сервер, вероятно, будет сетевым сервером, который вы используете для подключения к работающей системе (в случае сомнений обратитесь к сетевому администратору). Если вы хотите использовать другие команды, например wget за прокси-сервером , для доступа в Интернет, полезно установить переменную среды http_proxy.

.
...