Мне нужен доступ к удаленному хосту через мой сервер. unix - сокет через http-соединение, инициированное удаленным хостом.
Я знаю, как это может быть сделано прямым способом без http:
- Сервер прослушивает 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 можно сделать?