Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
linux_faq:http_tunnel [2020/01/14 10:50] – [bridge - Клиент] adminlinux_faq:http_tunnel [2020/01/14 11:02] (current) – [bridge на ruby] admin
Line 1: Line 1:
 +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 \\
 +На всякий случай утащил к себе: {{ :linux_faq: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 ===
 +Для автоматического запуска сделаем юнит сервиса:
 +<code>
 +[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
 +</code>
 +Уведомляем **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** такие директивы:
 +<code>Host mysshserver.com
 +    ProxyCommand /usr/bin/http_bridge client - http://tunnel.server/some-path %h %p user:password
 +</code>
 +или в случае с proxy-сервером:
 +<code>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'
 +</code>
 +И теперь при выполнении:
 +  ssh user@mysshserver.com
 +автоматически будет запускаться **bridge** (повышение привилегий в этом случае не нужно).
 +
 +=== /etc/systemd/system/http-bridge-client.service ===
 +Для автоматического запуска клиента сделаем юнит сервиса:
 +<code>
 +[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
 +</code>
 +Уведомляем **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**.  
 +
  
  • linux_faq/http_tunnel.txt
  • Last modified: 2020/01/14 11:02
  • by admin