Для организации подключения к SSH-серверу из окружений, в которых заблокирован любой трафик, кроме HTTP/HTTPS, можно настроить проброс к SSH на основе внешнего HTTP-прокси.На локальной системе, из которой производится подключение по SSH, добавляем в файл конфигурации ~/.ssh/config настройку для проброса доступа к SSH-сервру с именем "ssh-server" через обращение к хосту "ssh-via-https" утилитой ssh:
.ssh/config
Host ssh-via-https
ProxyCommand ~/.ssh/https-tunnel.bash
# уменьшаем интервал проверочных запросов для поддержания соедиения,
# так как некоторые межсетевые экраны агрессивно закрывают неактивные соединения.
ServerAliveInterval 30
Создаём скрипт ~/.ssh/https-tunnel.bash, в котором симулируем использование прокси-метода CONNECT при подключении к HTTPS-серверу "https-server" через утилиту socat, которая не поддерживает данный метод.
#!/usr/bin/env bash
{ printf "CONNECT ssh-server:22 HTTP/1.0\r\n\r\n"; cat; } | socat - SSL:https-server:443
На стороне внешнего HTTP-сервера "https-server" в конфигурации Apache httpd включаем модуль proxy_connect_module и разрешаем перенаправление запросов на 22 сетевой порт SSH-сервера "ssh-server".
/etc/httpd/httpd.conf
LoadModule proxy_connect_module .../modules/mod_proxy_connect.so
# ...
AllowCONNECT 22
<Proxy *>
Order deny,allow
Deny from all
</Proxy>
<Proxy ssh-server>
Order deny,allow
Allow from all
</Proxy>
Подключаемся к SSH-серверу "ssh-server" командой:
ssh ssh-via-https
URL: https://trofi.github.io/posts/295-ssh-over-https.html
Обсуждается: http://www.opennet.me/tips/info/3242.shtml