Я нахожусь за сетевым брандмауэром, который не позволяет мне ssh через порт по умолчанию. Из-за этого я не могу вставить какие-либо ветки bzr в мой репозиторий. Я хотел бы знать, возможно ли каким-либо образом прокси-сервер ssh через порт 80, чтобы я мог протолкнуть ветви.
Я слышал, что штопор позволяет вам это сделать, но я не уверен, как именно это сделать.
Если вам известен какой-либо работающий прокси-сервер, который позволяет вам это делать, пожалуйста, укажите их.
Хороший корпоративный брандмауэр будет проверять трафик независимо от порта, поэтому изменение порта может не сработать.
Если у вас есть контроль над сервером, и вы все еще хотите попробовать его, вы можете изменить порт 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 и настроили несколько вещей:
VPN может быть вариант, но если ssh
заблокирован, я ожидаю, что это тоже будет исключено.
Возможно, вы просто захотите поговорить со своими сетевыми администраторами. Вам нужно что-то сделать, и они вас останавливают. Если у них есть причина для блокировки ssh
, вероятно, они будут рассматривать любые крайние попытки обойти это довольно негативно ...
Короче говоря, было бы просто безопаснее поговорить с ними. [ 1122]
Извините, я должен играть в адвоката дьяволов.
Я знаю, что, скорее всего, есть причина для этого, однако, почему администратор вашей сети / брандмауэра не открывает конкретный порт, который вы ищете? С точки зрения безопасности, хотите ли вы, чтобы веб-инспекция пропустила что-нибудь? Если он настроен на обход порта 80 для стандартного трафика, и вы подвергаете себя опасности.
Я согласен с несколькими предложениями, приведенными выше, где точка-точка может быть более безопасным вариантом. Опять же, с точки зрения безопасности, мне было бы интересно узнать причину, по которой вы действительно обходите политики безопасности, и почему вы не можете поместить свой сервер в dmz или магистраль для доступа. Просто я. Удачи.
Если у вас нет никакого контроля над сервером для изменения порта SSH на порт 80 или если вы не можете использовать SSH через порт 80, потому что брандмауэр блокирует передачу таких данных через порт 80, вы можете попробовать TOR.
TOR - огромная сеть. Ваш компьютер подключается к другому компьютеру где-то в мире, этот компьютер подключается к другому, пока он не достигнет сервера SSH. Это все дружественно к брандмауэру, происходит на порту 443 (который ваша компания не блокирует, или иначе .. ну, это не так уж умно с их стороны). Это буквально просто огромный прокси или VPN, и он тоже зашифрован. Таким образом, вы можете получить доступ к любому хосту на любом порту (также SSH сервера на порту 22).
Взгляните на это онлайн на www.torproject.org .
Я только что прочитал сложное решение здесь:
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
Если брандмауэр позволяет Вам, можно выполнить 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 к названной машине mygateway
и Вы хотите достигнуть сервера SSH на mytarget
, установите netcat-openbsd на mygateway
(или, если это не запускает Ubuntu, удостоверьтесь, что это имеет nc
команда). Вставьте это Ваш ~/.ssh/config
:
Host mytarget
ProxyCommand ssh mygateway nc %h %p
Если хост, с которым Вы хотите соединиться, уже выполняет Apache и слушает на порте 443, и Вы управляете тем хостом, можно настроить этот Apache, чтобы принять соединения SSH и передать им. Посмотрите Туннелирование SSH по HTTP (S).