SVN более 2 туннелей SSH

Я ломаю здесь свой орех, пытаясь заставить это работать, возможно, кто-то может помочь мне понять это немного лучше. Я нашел вопрос, который почти то, что я хочу сделать, называется Доступ к хранилищу 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, и на сервере есть пользователь admin с действующим ключом. Таким образом, администратор может войти на каждый сервер практически с любого сервера, 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 ответа

Решение

Поэтому после долгого чтения и дополнительного чтения я, наконец, нашел некоторые пояснения к своим вопросам и понял, что этот конфиг не будет работать, а скорее, что @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, так как он содержит большую часть необходимой вам информации. Хорошее объяснение, которое я нашел в Прозрачном Многопрыжковом 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

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

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

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

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

Другие вопросы по тегам