Можно ли туннелировать трафик 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 прокси. Если вы хотите сделать это, вам нужен дополнительный «socksifier» в вашей локальной системе. См. Serverfault.com: Как я могу установить прокси для Subversion с туннелем SSH?

Роберт
источник
Могу ли я на самом деле использовать такой подход: dltj.org/article/ssh-as-socks-proxy ? Так что в случае с GoogleCode у меня был бы локальный компьютер -> socks-computer -> googlecode. И этот «ssh -D» будет запускаться на локальном компьютере: ssh -D 12345 [имя пользователя] @ [socks-computer]. Теперь я должен сказать svn использовать прокси на локальном компьютере: 12345. Мне нужно что-то еще?
Юха
Круто, я не знал, что OpenSSH уже включает прокси SOCKS. Смотрите также мой обновленный ответ.
Роберт
6
Вы можете обойти проблему с сертификатом HTTPS, добавив удаленный хост в файл локальных хостов с IP-адресом 127.0.0.1. Тогда вы можете использовать адрес remotehost: 12345, но трафик все равно будет направляться в туннель SSH.
Юха Паломяки
@ JuhaPalomäki Вы должны добавить это в качестве ответа
elhefe
1

Чтобы обойти проблему несоответствия DNS сертификата при доступе к удаленному серверу через туннель SSH, я сделал следующее:

  1. Сконфигурируйте туннель SSH в putty, чтобы локальный порт 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>
KunalP
источник