首页 > 解决方案 > 通过 http 连接通过本地 unix 套接字访问远程 shell

问题描述

我需要通过远程主机发起的 http 连接通过我的服务器 unix-socket 对远程主机进行 shell 访问。

我知道如何在没有 http 的情况下以直接的方式实现:

  1. 服务器监听 TCP-PORT 并将其映射到 UNIX-SOCKET:

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

  1. 远程主机将 Shell 映射到已启动的 TCP 连接:

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

  1. 要连接远程 shell,我可以这样做:

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

上述3个步骤的架构:

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

接下来我需要在remoteserver之间建立 HTTPS 。第 1 步会在 http 请求上对服务器执行什么操作。所以我想要这样的模式:

远程[shell] -> https://my.server.com:443/ shell :: server [ open unix: /tmp/12345.sock on Request /shell ] :: unix:/tmp/12345.sock <- server [tty]

我使用 ngnix,据我所知,LUA 可以在其中工作。但是我没有足够的LUA知识来实施这个计划。

更新 2020.02.12

我发现必须使用 websocket。所以 Schema 看起来像这样:

远程 [shell] -> WebSocket 代理客户端-> https://my.server.com:443/shell :: Web 服务器 -> WebSocket 服务器[开始监听 unix:/tmp/12345.sock] :: unix:/tmp /12345.sock <- 服务器 [tty]

WebSocket代理ClientWebSocketServer如何制作?

标签: shellnginxwebsocketluasocat

解决方案


推荐阅读