Чи можливо SSH через порт 80?


20

Я за мережевим брандмауером, який не дає мені пройти через порт за замовчуванням. Через це я не можу натиснути жодні гілки bzr до свого сховища. Мені хотілося б знати, чи можна якось проксі прошивати через порт 80, щоб я міг натискати гілки.

Я чув, що штопор дозволяє вам це зробити, але не знаю, як це зробити.

Якщо ви знаєте будь-який робочий проксі-сервер, який дозволяє це зробити, будь ласка, згадайте про них.


2
man sshвиявляє порт: хост: хостпорт. Тож спробуйте ssh 80:server.comчи так.
MarkovCh1

Це для налаштування тунелю через -L або -R. Тож вам знадобиться ще одна скринька, щоб пропустити її.
Цезій

Відповіді:


19

Хороший корпоративний брандмауер буде перевіряти трафік незалежно від порту, тому зміна порту просто не може працювати.

Якщо у вас є контроль над сервером, і ви все ще хочете спробувати його, ви можете змінити порт 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, швидше за все, вони розглянуть будь-які крайні спроби обійти це досить негативно ...

Словом, поговорити з ними може бути просто безпечніше.


7
+1, щоб обговорити ваші потреби зі своїм ІТ-відділом. У багатьох середовищах, включаючи моє, цей вид діяльності буде підставою для припинення.
Пантера

1
Крім того, якщо він збирається змусити сервер ssh прослуховувати на іншому порту, він може змусити його слухати як на порту 22, так і на 80, маючи два Portрядки, по одному для кожного порту у /etc/ssh/sshd_configфайлі.
Azendale

Я уникаю складання списку (список довгий і обговорення деяких пунктів в ньому може отримати дуже політичний характер), але це питання охоплює багато ситуацій, окрім того, що працівник прагне обійти політику компанії, яка лояльно реалізується власний відділ ІТ компанії. Я все для людей, які обговорюють свої робочі потреби з ІТ, але це не завжди можливо, і іноді ІТ-відділи навіть відповідають: "Це добре, але ми нічого не змінюємо, щоб задовольнити вас". Окремо, цілком правдоподібно, що порт 22 заблокований VPN не є, тому я думаю, що варто спробувати.
Елія Каган

@Panther Тоді деякі люди будуть ще щасливішими закінчити цей корпоративний режим.
NeverEndingQueue

15

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) .


ви також можете використовувати nc замість штопор для https, так? stackoverflow.com/a/15577758/32453
rogerdpack

3

Я щойно прочитав тут складне рішення:

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

Ви можете 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

Переконайтесь, що підключення localhost до SSH не мають пільг (щоб уникнути пускання незнайомців у ...)

Це має спрацювати, якщо ви знаходитесь за маршрутизатором, який дозволяє лише порт 80.

Якщо ви знаходитесь за проксі-сервером (тому вам потрібно встановити проксі-сервер у веб-переглядачі, щоб перейти в Інтернет), вам потрібно спочатку встановити тунель до свого власного хоста, а потім надіслати ще один запит на CONNECT всередині цього тунелю, щоб дістатися до свого хоста. Це складніше, для цього вам потрібно буде використовувати 2 неткани.

Все можливо, але робіть це на свій страх і ризик ...

ОНОВЛЕННЯ:

Або просто, просто скористайтеся веб-програмою, яка надає вам SSH через браузер. http://en.wikipedia.org/wiki/Web-based_SSH


2

Якщо у вас немає контролю над сервером, щоб змінити порт SSH на порт 80 або якщо ви не можете SSH через порт 80, оскільки брандмауер блокує вам передачу таких даних через порт 80, ви можете спробувати TOR.

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

Погляньте на це в Інтернеті за адресою www.torproject.org .


2

Мені шкода, я маю грати адвоката чортів.

Я знаю, що, швидше за все, є причина для цього, однак, чому ваш адміністратор мережевого / брандмауера не відкриє конкретний порт, який ви шукаєте? З точки зору безпеки, чи хочете ви ризикнути, що веб-інспекція щось пропустить? Якщо він налаштований на обхідний порт 80 для std-трафіку, і ви створюєте собі шкоду.

Я погоджуюся з декількома пропозиціями вище, де вказівка ​​на точку vpn може бути більш безпечним варіантом. Знову ж таки, з точки зору безпеки, мені було б цікаво дізнатися, чому ви справді обходите політику безпеки, і чому ви не можете поставити ваш сервер у dmz або магістраль для доступу. Тільки я. Удачі.


2
Не завжди можливо спілкуватися з адміністраторами мережі, і мережеві адміністратори не завжди є розумними.
Джеремі Біча

Наприклад, якщо ви сидите в кафе, підключений до WiFi, але адміністратор обмежений доступ (і вам все одно потрібно підключитися зараз).
old-ufo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.