Чи можливо тунель https трафіку через ssh тунель за допомогою стандартних ssh-програм?


12

Чи можу я перенаправити https-трафік (сховища svn) через ssh-тунель.

Проблема полягає в тому, що служби, які використовують https, не працюють, якщо я просто створюю один тунель для прослуховування, наприклад:

ssh -L 12345:server.com:443 localhost

Чи потрібно щось робити ще? Метою є тунель https://PROJECT.googlecode.com/svn/, де PROJECT - назва проекту.

Відповіді:


12

З'єднання HTTPS можна перенаправити через переадресацію порту SSH - однак перевірка сертифіката SSL / TLS завершиться невдачею у випадках, якщо ім'я хоста не збігається:

Ви підключаєтесь до https: // localhost: 12345, але сертифікат сервера містить ім'я server.com.

Замість прямої переадресації з'єднання HTTPS я би запустив проксі HTTP (s) / SOCKS на віддаленому комп'ютері, до якого ви відкриваєте з'єднання SSH. Потім налаштуйте програму, яку ви хочете тунелювати, щоб використовувати цей проксі через переадресацію портів. Це було б чисте рішення.

Оновлення: Схоже, SVN може використовувати проксі-сервери HTTP, але не проксі-сервери SOCKS. Якщо ви хочете зробити це, вам потрібен додатковий «носок» в локальній системі Див. Serverfault.com: Як можна встановити проксі для підриву за допомогою ssh тунелю?


Чи можу я реально використовувати такий підхід: dltj.org/article/ssh-as-socks-proxy ? Тож у випадку googlecode у мене був би локальний комп'ютер -> socks-computer -> googlecode. І цей "ssh -D" запускався б на локальному комп'ютері: ssh -D 12345 [ім'я користувача] @ [socks-computer]. Тепер я повинен сказати svn використовувати проксі на локальному комп'ютері: 12345. Чи потрібно мені щось інше?
Juha

Класно, я не знав, що OpenSSH вже включає проксі-сервер SOCKS. Дивіться також мою оновлену відповідь.
Роберт

6
Ви можете подолати проблему сертифіката HTTPS, додавши віддалений хост у файл локальних хостів із ip адресою 127.0.0.1. Тоді ви можете використовувати адресу remotehost: 12345, але трафік все одно буде спрямований на тунель SSH.
Juha Palomäki

@ JuhaPalomäki, слід додати це як відповідь
elhefe

1

Щоб мати змогу вирішити проблему невідповідності DNS сертифіката під час доступу до віддаленого сервера з тунелем SSH, я зробив наступне:

  1. Налаштуйте тунель SSH в шпаклівці, щоб локальний порт 443 пересилав трафік на віддалений сервер (L443 : <remote.server.com>:443 )
  2. Оновіть C:\Windows\System32\drivers\etc\hostsфайл, щоб додати запис, такий як127.0.0.1 <remote.server.com>
  3. Якщо ви використовуєте проксі-сервер HTTP (наприклад, якщо ви працюєте з корпоративного проксі-сервера), тоді обійдіть <remote.server.com>хост від системного проксі
  4. Тепер ви можете отримати доступ до URL-адреси віддаленого сервера за допомогою https://<remote.server.com>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.