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

Как я могу настроить прокси для подрывной работы с туннелем ssh?

Я хочу проверить / обновить код через прокси, так как у меня медленное локальное соединение. Я настраиваю ssh-туннель: ssh -D 8090 user@ssh.proxy.net пересылать все пакеты на мой localhost: 8090.

Как я могу настроить Subversion для этого?

Вы используете SSH для настройки локального SOCKS-сервера, который туннелирует на ваш SSH-сервер. Вы упомянули, что причина этого в том, что «локальное соединение медленное», но я не понимаю, как туннелирование к серверу SSH сделает его быстрее.

В любом случае, ваша проблема в том, что Subversion может подключаться через HTTP-прокси или SSH-туннель, но ничего не знает о SOCKS. Итак, вам нужно SOCKSify Subversion, перехватывая все его TCP-соединения и перенаправляя их на прокси-сервер SOCKS.

Вместо того, чтобы перефразировать тех, кто делал это раньше, я укажу вам их подробные объяснения:

Или, вкратце, в основном вырезано из страницы Оливера:

Debian содержит два соксификатора, которые также доступны на sourceforge. Самым недавно обновленным является ProxyChains, и его довольно просто настроить. Большинство соксификаторов работают аналогичным образом, поэтому эти инструкции должны быть разумным общим случаем. Чтобы настроить ProxyChains, вам просто нужно отредактировать $ (HOME) /. Proxychains / proxychains.conf, чтобы в нем были только следующие строки:

DynamicChain
tcp_read_time_out 15000
tcp_connect_time_out 10000
[ProxyList]
socks5 127.0.0.1 8090
# NB: for some reason 'localhost' doesn't work in the above line

Все, что вам нужно сделать, это «обернуть» svn в ProxyChains.

proxychains svn commit

В приведенном выше примере приложению svn было не до того, что его TCP-соединения с сервером Subversion были перенаправлены на ваш прокси-сервер SOCKS. "

Публикация здесь, так как я нашел менее беспорядочный способ сделать это. Ты можешь использовать Polipo чтобы использовать туннель SSH SOCKS через HTTP-прокси, добавив следующие строки в его конфигурацию:

socksParentProxy = "localhost:8090"
socksProxyType = socks5

polipo по умолчанию прослушивать порт 8123. А потом в $HOME/.subversion/servers создайте группу для хостов подрывной деятельности, с которых вы хотите выйти, например если ваш хост репозитория Subversion назван proj1.svn.domain.tld, proj2.svn.domain.tldи т. д., затем добавьте в [groups] раздел:

[groups]
domain = *.svn.domain.tld

И, наконец, укажите конфигурацию прокси для группы только что добавленных хостов, добавив блок для группы:

[domain]
http-proxy-host=localhost
http-proxy-port=8123

После этого вы сможете нормально работать с репозиторием, как раньше, без туннеля SSH.

HTH

Я не знаю о туннелировании с ssh -D но используя что-то вроде

ssh -L8090:svn.server.com:22 user@other.server.com

Затем вы можете выполнить туннелирование, добавив новый протокол для Subversion с конкретным портом, на котором находится туннель. Итак, в ~ / .subversion / config добавьте строку вроде

pssh = ssh -p8090

в [tunnels] раздел, а затем вместо svn + ssh: //user@original.com используйте svn + pssh: // user @ localhost

Если у вас есть рабочая копия, вы можете использовать

svn switch --relocate svn+ssh://user@original.com svn+pssh://user@localhost

для переключения адреса, с которым связана рабочая копия, без необходимости выполнять новую проверку.

Посмотрите файлы конфигурации по умолчанию в ~ / .subversion /. Там много полезных примеров закомментировано. Прокси будут установлены в ~ / .subversion / servers

Бывают случаи, когда это требуется на Windows ПК для подключения svn + ssh к репозиторию SVN через прокси-сервер socks. Эту проблему можно решить с помощью Putty, который обеспечивает функциональность SSH и может работать с различными типами прокси. Предлагаемое решение не требует перенаправления локального порта.

  1. Запустите putty и создайте сеанс (например, socks_proxy)
  2. Настроить ТОЛЬКО прокси для сеанса (Connection-> Proxy), где требуется отправить Имя хоста прокси и Порт. Putty работает с выбором различных типов прокси, включая SOCKS4 и SOCKS5. По желанию вы можете предоставить имя пользователя и пароль для доступа через прокси.
  3. Сохраните сеанс. Помните, что сеанс не будет настроен Имя хоста для подключения.
  4. Откройте файл конфигурации SVN Данные приложения \ Subversion \ config и найдите раздел [туннели]
  5. Под заголовком раздела поместите дополнительное описание протокола SVN: ssh = PATH_TO_PLINK / PLINK.EXE - загрузить socks_proxy. На самом деле имя протокола - это ваш выбор, поэтому вы можете выбрать любое имя, если ssh уже используется (например, используйте pssh = вместо того ssh =).
  6. Настройте ключ для SSH-доступа к целевому серверу, на котором SSH будет использоваться для запуска svnserve. Для поддержки ключей рекомендуется использовать pageant.
  7. Используйте svn для доступа svn + ssh. Имя пользователя должно быть передано в URL - svn ls svn +имя_протокола: // имя пользователя @ сервер / репозиторий где имя протокола следует заменить на настоящее имя, используемое в [туннели] раздел конфигурации SVN.

Что это такое - SVN будет использовать имя протокола, чтобы определить, что для подключения должен использоваться plink.exe, а plink будет использовать имя сеанса socks_proxy чтобы определить, что прокси присутствует. Помни это PATH_TO_PLINK следует вводить с косой чертой, а не с обратной. Пример для случая, когда plink.exe находится в папке C: \ Program Files \ Putty: ssh = C: / Program Files / Putty / PLINK.EXE - загрузить socks_proxy.

Вы могли бы дать цоски попытка. С помощью tsocks вы настраиваете его для использования SSH прокси-сервера SOCKS, а затем запускаете svn следующим образом:

tsocks svn co {etc...}