Возможно ли SSH через порт 80?

Я нахожусь за сетевым брандмауэром, который не позволяет мне ssh через порт по умолчанию. Из-за этого я не могу вставить какие-либо ветки bzr в мой репозиторий. Я хотел бы знать, возможно ли каким-либо образом прокси-сервер ssh через порт 80, чтобы я мог протолкнуть ветви.

Я слышал, что штопор позволяет вам это сделать, но я не уверен, как именно это сделать.

Если вам известен какой-либо работающий прокси-сервер, который позволяет вам это делать, пожалуйста, укажите их.

20
задан 24 February 2012 в 07:58

5 ответов

Хороший корпоративный брандмауэр будет проверять трафик независимо от порта, поэтому изменение порта может не сработать.

Если у вас есть контроль над сервером, и вы все еще хотите попробовать его, вы можете изменить порт sshd на порт 80. Предупреждение Если у вас что-то еще работает на порту 80 (на сервере), это не будет работать и, скорее всего, будет означать, что вы полностью потеряете SSH-доступ к серверу!

Вам нужно отредактировать /etc/ssh/sshd_config и изменить Port на 80. Затем запустите

sudo restart ssh

И затем подключитесь:

ssh user@host -p80

Ваш путь к bzr будет выглядеть примерно так: bzr+ssh://host:80/path/


Другой метод заключается в использовании WebDav. Это должно полностью обойти проблему брандмауэра, поскольку все это происходит на порте 80, но для этого потребуется, чтобы вы запустили Apache и настроили несколько вещей:

  1. Установите WebDav
  2. Переместите свою ветку в нужное место
  3. Используйте плагин bzr-webdav для подключения

VPN может быть вариант, но если ssh заблокирован, я ожидаю, что это тоже будет исключено.

Возможно, вы просто захотите поговорить со своими сетевыми администраторами. Вам нужно что-то сделать, и они вас останавливают. Если у них есть причина для блокировки ssh, вероятно, они будут рассматривать любые крайние попытки обойти это довольно негативно ...

Короче говоря, было бы просто безопаснее поговорить с ними. [ 1122]

0
ответ дан 24 February 2012 в 07:58

Извините, я должен играть в адвоката дьяволов.

Я знаю, что, скорее всего, есть причина для этого, однако, почему администратор вашей сети / брандмауэра не открывает конкретный порт, который вы ищете? С точки зрения безопасности, хотите ли вы, чтобы веб-инспекция пропустила что-нибудь? Если он настроен на обход порта 80 для стандартного трафика, и вы подвергаете себя опасности.

Я согласен с несколькими предложениями, приведенными выше, где точка-точка может быть более безопасным вариантом. Опять же, с точки зрения безопасности, мне было бы интересно узнать причину, по которой вы действительно обходите политики безопасности, и почему вы не можете поместить свой сервер в dmz или магистраль для доступа. Просто я. Удачи.

0
ответ дан 24 February 2012 в 07:58

Если у вас нет никакого контроля над сервером для изменения порта SSH на порт 80 или если вы не можете использовать SSH через порт 80, потому что брандмауэр блокирует передачу таких данных через порт 80, вы можете попробовать TOR.

TOR - огромная сеть. Ваш компьютер подключается к другому компьютеру где-то в мире, этот компьютер подключается к другому, пока он не достигнет сервера SSH. Это все дружественно к брандмауэру, происходит на порту 443 (который ваша компания не блокирует, или иначе .. ну, это не так уж умно с их стороны). Это буквально просто огромный прокси или VPN, и он тоже зашифрован. Таким образом, вы можете получить доступ к любому хосту на любом порту (также SSH сервера на порту 22).

Взгляните на это онлайн на www.torproject.org .

0
ответ дан 24 February 2012 в 07:58

Я только что прочитал сложное решение здесь:

http://benctechnicalblog.blogspot.hu/2011/03/ssh-over-connect-over-port-80.html [ 112]

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

Предполагается, что на домашнем сервере работает Apache. Идея заключается в том, чтобы включить mod_proxy на вашем сервере, а затем ограничить его подключением к localhost (proxy.conf):

<IfModule mod_proxy.c>
         ProxyRequests On
        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Deny from all
        </Proxy>
        <Proxy localhost>
          Allow from all
        </Proxy>
        AllowCONNECT 22
        ProxyVia On
</IfModule>

Теперь вы можете выполнить HTTP-запрос на подключение к localhost, и веб-сервер установит туннель для вам, вам нужно только убедиться, что весь трафик проходит через ваш прокси:

ssh -o 'ProxyCommand nc -X connect -x myhost.example.com:80 localhost 22' myhost.example.com

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

Это должно работать, если вы находитесь за маршрутизатором, который разрешает выход только через порт 80.

Если вы находитесь за прокси-сервером (поэтому вам нужно установить прокси в вашем браузере для доступа в Интернет), вам сначала нужно будет установить туннель для вашего собственного хоста, а затем выполнить еще один запрос CONNECT внутри этого туннеля, чтобы добраться до вашего хоста. , Это более изощренно, для этого вам нужно будет использовать 2 netcats.

Все возможно, но делайте это на свой страх и риск ...

ОБНОВЛЕНИЕ:

Или просто, просто используйте веб-приложение, которое дает вам SSH через браузер. http://en.wikipedia.org/wiki/Web-based_SSH

0
ответ дан 24 February 2012 в 07:58

SSH через прокси

Если брандмауэр позволяет Вам, можно выполнить ssh к любому порту, но это требует, чтобы ssh сервер послушал на том порте. Порт 80 вряд ли будет работать, потому что большинство мест, которые имеют брандмауэры, анализирует трафик в том порте и блокирует что-либо, что не является HTTP. Но порт 443, который обычно является портом HTTPS, часто работает, потому что SSH и HTTPS много походят друг на друга к фильтрующему программному обеспечению, таким образом, Ваша сессия SSH будет похожа на сессию HTTPS. (Возможно отличить HTTPS и SSH, таким образом, это не будет работать, если брандмауэр будет достаточно сложен.)

Если Вы управляете сервером, заставьте его послушать на порте 443 в дополнение к 22 (нормальный ssh порт). Можно настроить порт в /etc/ssh/sshd_config: добавьте строку

Port 443

в дополнение к Port 22 это должно уже быть там. Обратите внимание, что это предполагает, что ssh сервер не является также сервером HTTPS. Если это будет, то необходимо будет найти другой порт, что брандмауэр позволяет Вам использовать или найти другой ssh сервер (см. передачу ниже).

Если Вы не должны устанавливать веб-прокси в своем веб-браузере, то можно попытаться соединиться непосредственно:

ssh -p 443 myserver.example.com

Если это работает, определите псевдоним в Вашем ~/.ssh/config:

Host myserver
HostName myserver.example.com
Port 443

Если необходимо установить веб-прокси в веб-браузере, сказать ssh проходить прокси. Штопор установки. Определите псевдоним как это в Вашем ~/.ssh/config, где http://proxy.acme.com:3128/ прокси, который Вы используете для HTTPS для внешней стороны (замена надлежащим именем хоста и портом):

Host myserver
HostName myserver.example.com
Port 443
ProxyCommand /usr/bin/corkscrew proxy.acme.com 3128 %h %p

SSH по SSH

Если можно добраться до некоторой внешней машины одним из методов выше, но не к машине Вы интересуетесь, используете это для передачи соединения. Принятие Вас может ssh к названной машине mygateway и Вы хотите достигнуть сервера SSH на mytarget, установите netcat-openbsd на mygateway (или, если это не запускает Ubuntu, удостоверьтесь, что это имеет nc команда). Вставьте это Ваш ~/.ssh/config:

Host mytarget
ProxyCommand ssh mygateway nc %h %p

SSH к Apache

Если хост, с которым Вы хотите соединиться, уже выполняет Apache и слушает на порте 443, и Вы управляете тем хостом, можно настроить этот Apache, чтобы принять соединения SSH и передать им. Посмотрите Туннелирование SSH по HTTP (S).

15
ответ дан 24 February 2012 в 07:58

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

Похожие вопросы: