使用 NGINX 反向代理 SSH。(子域名到运行 SSH 的 Docker 容器)

使用 NGINX 反向代理 SSH。(子域名到运行 SSH 的 Docker 容器)

时间片长度限制年龄:22八濑:22应该分别接受并导向机器 x 和机器 y。NGINX仅通过反向代理来协调流量。

大家好,很棒的社区,我是来自瑞典的奥斯卡。

当前设置

我有一台接受陣容,让我们打电话给主持人机器A。因此导致ssh [email protected]SSH-22 号端口的服务机器A机器 A跑步docker 容器s:机器B和一些其他机器,让我们一次关注一个容器。

预期用途

我希望发生这样的事情:

  1. 用户鲍勃操作机器B无法访问机器A因为用户不被信任。
  2. 用户鲍勃连接到基数:22使用 SSH 并获取 shell机器B

问题

我不知道如何配置它。我想我正在寻找 SSH 的反向代理。我所有其他端点都使用 NGINX 进行反向代理,因为这是我最擅长的,所以我正在研究ngx_stream_proxy_module它基本上可以反向代理任何 TCP 连接。问题是我无法理解 NGINX 流代理应该如何区分a.seb.a.se并且假设任何字符串在n.a.se哪里。n

如果您对我的设置或问题本身有任何疑问,请添加评论,我会对此问题进行编辑。提前致谢,任何帮助和见解都将不胜感激。

注意:主机运行 Debian 11,我拥有完全访问权限。我更喜欢使用 Docker 作为容器管理器,并使用 NGINX 来路由网络流量。

注意:我添加了一些最基本的资源的链接,这并不是为了嘲笑潜在的帮助者,而是为了帮助将来阅读此帖子并提出与我现在相同的问题的人。

答案1

可以使用主机 A 作为跳转主机来连接到容器。但是,这需要主机 A 上的用户帐户。

可以限制跳转主机账户,以便无法访问服务器本身。

可以在主机 A 中进行限制sshd_config

Match user bob
    X11Forwarding no
    AllowTcpForwarding
    ForceCommand ssh bob@<container>

设置完成后,可以:

  1. ssh [email protected]
  2. 提供主机系统密码
  3. SSH 守护进程将强制对容器执行 SSH 命令
  4. 给出容器密码

还可以在主机上创建一个密钥对bob,用于对容器进行身份验证。这样就不需要第二个密码了。

相关内容