Сделать доступ к удаленной оболочке через локальный сокет unix через http соединение - PullRequest
0 голосов
/ 10 февраля 2020

Мне нужен доступ к удаленному хосту через мой сервер. unix - сокет через http-соединение, инициированное удаленным хостом.

Я знаю, как это может быть сделано прямым способом без http:

  1. Сервер прослушивает TCP-PORT и сопоставляет его с UNIX -SOCKET:

server# socat TCP-LISTEN:12345 UNIX-LISTEN:/tmp/12345.sock

Удаленный хост сопоставляет Shell с инициированным TCP-соединением:

remote# socat EXEC:sh,pty,stderr,setsid,sigint,sane TCP:my.server.com:12345

Для подключения удаленной оболочки я могу сделать это:

server# socat FILE:`tty`,raw,echo=0 UNIX-CONNECT:/tmp/12345.sock

Схема из трех шагов выше:

remote [shell] -> tcp: my.server.com: 12345 :: server :: unix: / tmp / 12345.sock <- <strong>server [tty]

Далее мне нужно установить HTTPS между remote и server . Что бы шаг 1 делал на сервере по HTTP-запросу. Поэтому я хочу, чтобы схема была такой:

remote [shell] -> https : //my.server.com: 443 / shell :: сервер [ open unix: / tmp / 12345.sock по запросу / shell ] :: unix: / tmp / 12345.sock <- <strong>server [tty]

Я использую ngnix и, как я знаю, LUA может работать внутри него. Но у меня недостаточно знаний о LUA для реализации плана.

UPD 2020.02.12

Я обнаружил, что необходимо использовать веб-сокет. Таким образом, схема выглядит следующим образом:

remote [shell] -> Клиент прокси WebSocket -> https://my.server.com: 443 / shell :: Web Server -> WebSocket Server [запускает прослушивание unix: / tmp / 12345.sock] :: unix: / tmp / 12345.sock <- сервер [tty] </p>

Как можно Клиент прокси WebSocket и Сервер WebSocket можно сделать?

...