通过 HTTPS 通过 SSH 连接到反向代理后面的服务器

SSH over HTTPS to a server behind a reverse proxy

提问人:slaffy 提问时间:5/19/2023 更新时间:5/19/2023 访问量:401

问:

如何通过反向代理通过 https 进行 ssh?我有一个在端口 2222 上运行 sshd 的 docker 容器。我可以很好地在本地ssh进入容器。 托管 docker 容器后,它位于企业反向代理后面。部署层允许我公开一个端口。我无法更改反向代理配置。我知道它正在运行 ISTIO sidecar 来处理流量。ssh -i id_rsa -p 2222 10001@localhost

我也在容器上运行 API 以及端口 8080。如果我在部署期间公开 8080。我会用 GET 请求点击 api,它会用 200 代码响应。example.com/myapp/

我将公开的端口更改为 2222,并希望通过 ssh 连接到容器中。我不能只是通过ssh进入主机,因为它位于反向代理后面的路由上。我可以设置一个从容器到我具有 ssh 访问权限的其他 vm 服务器的 ssh 隧道,但我正在努力避免这种情况。/myapp/example.com

有没有办法使用https ssh客户端连接到服务器?任何帮助都是值得赞赏的。

例如,以下命令

ssh -v -i id_rsa -p 2222 [email protected]/myapp/

回应Could not resolve hostname example.com/myapp/: nodename nor servname provided, or not known

我想我需要像netcat一样使用netcat来解析代理。所以我愿意ProxyCommand=nc -X connect -x example.com/myapp/:2222 %h %p

nc -z example.com 443

我得到Connection to example.com port 443 [tcp/https] succeeded!

docker 安全 ssh https 反向代理

评论

0赞 jeb 5/19/2023
它说的是HTTP还是HTTPS(你可以用curl检查它)?您至少需要使用正确的协议进行通信,仅靠 ssh 是行不通的。将端口从 8080 更改为 2222 不会更改任何内容。如果不修改端点 (api),这将无法正常工作
0赞 David Maze 5/19/2023
ssh 和 HTTP 是不同的协议,您无法通过 HTTP 代理建立 ssh 连接隧道。
0赞 minus one 12/5/2023
以下链接接缝可以做类似的事情:通过 Websocket 的 SSH(反向)隧道。我会试一试。

答: 暂无答案