Как использовать ssh через http или https?

У меня есть клиентский ноутбук linux fedora21 за корпоративным брандмауэром (который позволяет через HTTP и https-порты, но не ssh 22), и у меня есть сервер linux fedora21 дома за моим собственным маршрутизатором. Просмотр с помощью https работает, когда я указываю публичный IP-адрес моего домашнего сервера (потому что я настроил домашний маршрутизатор)

Возможно ли передать ssh (удаленную оболочку) на мой домашний сервер через порт http /s?

Я увидел инструмент под названием corkscrew. это поможет?

opensshd и httpd запустить домашний сервер. Что еще нужно для конфигурации?

34 голоса | спросил MMM 16 MarpmMon, 16 Mar 2015 16:25:51 +03002015-03-16T16:25:51+03:0004 2015, 16:25:51

1 ответ


31

Что возможно, зависит от того, что позволяет брандмауэр.

Если брандмауэр разрешает произвольный трафик на порту 443

Некоторые брандмауэры делают простой выход и разрешают что-либо на порту 443. Если это так, самый простой способ добраться до вашего домашнего сервера - заставить его слушать SSH-соединения на порту 443. Если ваш компьютер напрямую подключен к Интернет, просто добавьте Port 443 в /etc/ssh/sshd_config или /etc/sshd_config чуть ниже строки, которая говорит Port 22 , Если ваш компьютер находится за маршрутизатором /межсетевым экраном, который перенаправляет входящие соединения, перенаправьте входящие соединения на порт 443 на порт 22 вашего сервера с чем-то вроде

iptables -t nat -I PREROUTING -p tcp -i wan0 --dport 443 -j DNAT --to-destination 10.1.2.3:22

где wan0 - это интерфейс WAN на вашем маршрутизаторе, а 10.1.2.3 - IP-адрес вашего сервера в домашней сети.

Если вы хотите разрешить домашнему серверу прослушивать как HTTPS-соединения, так и SSH-соединения на порту 443, возможно - можно легко отличить трафик SSH и HTTPS (в SSH сервер сначала говорит, а в HTTP и HTTPS - сначала клиент говорит). См. http://blog.stalkr.net/2012/02/sshhttps-multiplexing-with-sshttp.html и http: //wrouesnel. github.io/articles/Setting%20up%20sshttp/ для учебных пособий о том, как установить это с помощью sshttp , а также Имеет SSH на порту 80 или 443, в то время как веб-сервер (nginx) работает на этих портах

Если у вас есть веб-прокси, который разрешает туннелирование CONNECT

Некоторые брандмауэры блокируют все исходящие соединения, но позволяют просматривать веб-страницы через прокси-сервер, который позволяет HTTP ---- +: = 6 =: + ---- , чтобы эффективно пробивать дыру в брандмауэре. Метод CONNECT может быть ограничен определенными портами, поэтому вам может понадобиться объединить его с прослушиванием на порту 443, как указано выше.

Чтобы заставить SSH перейти через прокси-сервер, вы можете использовать инструмент, например, штопор . В CONNECT добавьте строку ~/.ssh/config как показано ниже, если ваш веб-прокси ProxyCommand:

http://web-proxy.work.example.com:3128

Обертка SSH в HTTP (S)

Некоторые брандмауэры не разрешают SSH-трафик даже на порту 443. Чтобы справиться с этим, вам нужно скрыть или туннелировать SSH во что-то, что пропускает межсетевой экран. См. http://dag.wiee.rs/howto/ssh-http-tunneling/ для учебника по этому вопросу с proxytunnel .

ответил Gilles 17 MaramTue, 17 Mar 2015 03:49:57 +03002015-03-17T03:49:57+03:0003 2015, 03:49:57

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132