Table of Contents

https://en.wikipedia.org/wiki/Web-based_SSH

С помощью WebRTC

https://github.com/nobonobo/ssh-p2p - ровно то что нужно
https://github.com/mxseba/rtc-ssh
https://github.com/ryscheng/uproxy-networking - хз пока что

с использованием метода CONNECT

http://www.zeitoun.net/articles/ssh-through-http-proxy/start

Без использования метода CONNECT (только PUT и GET)

bridge на ruby

https://github.com/luizluca/bridge
На всякий случай утащил к себе: bridge-master.zip
Данная утилита (не моя) - скорее просто proof-of-concept. Она работает, но ей много чего не хватает (например - аутентификации).
Протестировал на чистом контейнере Ubuntu 19.10.
Продвинутая версия с BasicAuth (нашел среди форков) - https://github.com/puochan/bridge
Добавлен HTTPS - https://github.com/vadimkim/bridge
Вот мой вариант - https://github.com/MikeQ123/bridge.git. Это форк от puochan с обработкой перенаправлений при установке соединения и добавлением к запросам cookie OpenDNS. Нужно бы добавить ssl, хотя, если внутри всегда ssh, то ssl не нужен.

bridge - сервер

Сервер может быть настроен где угодно (не обязательно внутри сети, куда нам нужно попасть).

apt-get install ruby git
git clone https://github.com/MikeQ123/bridge.git
sudo cp ./bridge/http_bridge /usr/bin/

Запускаем сервер

sudo http_bridge server 80 /some-path user:password

Сервер будет принимать подключения на порту 80, URN /some-path и аутентифировать пользователя по логину user и парою password.

/etc/systemd/system/http-bridge-server.service

Для автоматического запуска сделаем юнит сервиса:

[Unit]
Description=Setup a secure tunnel to remote server
After=network.target

[Service]
ExecStart=/usr/bin/http_bridge server 80 /some-path user:password
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

Уведомляем systemd, включаем сервис и запускаем его:

systemctl daemon-reload
systemctl enable http-bridge-server.service
systemctl start http-bridge-server.service

bridge - Клиент

apt-get install ruby git
git clone https://github.com/MikeQ123/bridge.git
sudo cp ./bridge/http_bridge /usr/bin/

Запускаем клиент:

sudo bash -c 'http_proxy=http://proxy-server:3128 http_bridge client 222 http://tunnel.server/some-path some.ssh-server.com 22 user:password'

Всё. Теперь на клиентской машине на порту 222 у нас доступен порт 22 хоста some.ssh-server.com.

Для автоматического запуска клиента при старте сессии ssh нужно добавить в ~/.ssh/config такие директивы:

Host mysshserver.com
    ProxyCommand /usr/bin/http_bridge client - http://tunnel.server/some-path %h %p user:password

или в случае с proxy-сервером:

Host mysshserver.com
    ProxyCommand bash -c 'http_proxy=http://proxy.server:3128 /usr/bin/http_bridge client - http://tunnel.server/some-path %h %p user:password'

И теперь при выполнении:

ssh user@mysshserver.com

автоматически будет запускаться bridge (повышение привилегий в этом случае не нужно).

/etc/systemd/system/http-bridge-client.service

Для автоматического запуска клиента сделаем юнит сервиса:

[Unit]
Description=HTTP Tunnel Client Service 
After=network.target

[Service]
Environment="http_proxy=http://proxy_server:3128"
ExecStart=/usr/bin/http_bridge client 222 http://tunnel.server/some-path some.ssh-server.com 22 user:password
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

Уведомляем systemd, включаем сервис и запускаем его:

sudo systemctl daemon-reload
sudo systemctl enable http-bridge-client.service
sudo systemctl start http-bridge-client.service

httptunnel

https://github.com/larsbrinkhoff/httptunnel
Можно найти в репозиториях многих дистрибутивов.
Пишут, что испоьзует чистые PUT и GET запросы, то есть должен проходить большинство PROXY.