Як я можу встановити проксі для підриву за допомогою тунелю ssh?


24

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

Як я можу налаштувати підривну роботу для цього?

ssh  svn  proxy 

+1, гарне запитання. Мені цікаво подивитися, чи є спосіб зробити це теж. У мене дуже повільний Wi-Fi і часто переглядаю через проксі-сервер SOCKS, створений так само, було б зручно, щоб субверсія (або інші) використовували той самий.
Tim Post

А проксі робить ваш wi-fi швидшим?
innaM

Відповіді:


21

Ви використовуєте 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. "


Дуже дякую, що це працює для мене. Якщо ви перебуваєте на OS X і потребуєте переадресації DNS, тоді використовуйте цю проксі-ланцюг. github.com/haad/proxychains і переконайтеся, що рядок "proxy_dns" знаходиться в конфігурації після першого рядка.
Гурно

2

Опублікувавши тут, оскільки я знайшов менш хитромудрий спосіб це зробити. Ви можете використовувати Polipo, щоб використовувати тунель SSH SOCKS через проксі-сервер HTTP, додавши до його конфігурації наступні рядки:

socksParentProxy = "localhost:8090"
socksProxyType = socks5

polipoза замовчуванням слухати на порту 8123. А потім в $HOME/.subversion/serversстворенні групи для підривних хостів ви хочете перевірити з, наприклад , якщо ваш хост підривного сховища (s) названий 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


Для чого "localhost: 8090"?
Декінг

@Deqing - це проксі-сервер SOCKS, який поліпо використовує як його верхній потік.
Ashish SHUKLA

1

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

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

Потім можна виконати тунелювання, додавши новий протокол до підривної роботи з певним портом, на якому тунель. Отже, в ~ / .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

для переключення адреси, з якою пов'язана робоча копія, без необхідності робити новий замовлення.


Я не можу зовсім зловити. Припустимо: я спочатку замовляв: svn co svn: //code.somewhere.com/prj prj І що я можу зробити зараз? В основному я не можу зрозуміти, що ви маєте на увазі під ": замість svn + ssh: //user@ssh.proxy.net". Спасибі

Якщо у вас є робоча копія svn co svn+ssh://code.somewhere.com/prj prj, після prj/svn switch --relocate svn+ssh://code.somewhere.com svn+pssh://localhost/svn co svn+pssh://localhost/prj prj
входу

Може, ми десь неправильно розуміємо. Насправді я хочу перевірити код на сервері А через сервер B (ssh -D 8090 користувач @ B) на своїй локальній машині, чи це можливо? svn co svn + pssh: // localhost / prj prj, здається, просто замовте код один на сервері B, якщо я не отримую вас.

Я оновив, щоб вирішити цю проблему через тунелінг ssh, який я знаю. Якщо я правильно розумію, використовуючи "ssh -L8090: serverA.com: 22 user@serverB.com", а потім "svn co svn + pssh: // user @ localhost / prj prj" перевірить код із сервера A на вашому машина, через сервер B.
blahdiblah

Ах! Я думаю, я бачу, де може бути плутанина. Налаштування тунелю запускає оболонку на проксі-сервері, але тут не відбуваються команди svn. Це має відбуватися в окремій оболонці вашого комп'ютера. Прапор -f для ssh може дозволити використовувати ту саму оболонку.
блахдібла

1

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


1

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

  1. Запустіть шпаклівку та створіть сеанс (наприклад, socks_proxy)
  2. Налаштування ТІЛЬКИ проксі для сеансу (connection-> проксі - сервер) , де це потрібно представити проксі - ім'я хоста і порт . 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 . Рекомендується використовувати тестування для підтримки клавіш.
  7. Використовуйте svn для доступу до svn + ssh. Ім'я користувача повинно бути вказано в URL - svn ls svn + ime_ протокола : // ім'я користувача @ сервер / сховище, де ім'я протоколу має бути замінено реальним ім'ям, яке використовується в розділі [тунелі] конфігурації 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 .


1

Ви могли б дати tsocks спробувати. За допомогою tsocks ви налаштовуєте його для використання налаштування SSH проксі SOCKS, а потім запустіть svn так:

tsocks svn co {etc...}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.