访问远程机器上未公开的服务

访问远程机器上未公开的服务

我在具有 ssh 访问权限的远程服务器上运行着一些服务(在 docker 容器中)。

这些服务是管理 API,我并不想将它们公开给其他人(我并不想为每项服务设置身份验证,也不想管理更多密码,因为只有少数拥有 ssh 访问权限的管理员可能需要使用它们)。不过,我还是希望能够从我的工作站与这些服务进行交互(使用安装在我工作站上的工具)。我想重用我现有的 ssh 身份验证。

理想情况下,我想要的是创建一次到远程服务器的安全隧道连接,并使用它来访问那些只监听来自本地网络的请求(即来自的请求localhost)的 API,这样只有那些能够通过 ssh 连接到服务器的人才能访问这些 API。

我认为不可能“通过”远程环回接口来代理流量,但是有没有办法让这些服务只监听通过服务器代理的连接,而不需要对每个服务进行特定的配置(比如每个端口的防火墙规则)?

我一直在尝试并试图了解不同的 ssh 隧道方法,例如,,,ssh -D ......但它们不允许我访问监听远程“localhost”的服务,所以无论如何我都必须有防火墙规则。ssh -L ...ssh -R ...

谢谢。

答案1

我认为你想要实现的目标叫做SSH 隧道基本上,您可以配置工作站中的本地端口以转发到远程服务器,如下所示:

本地服务器:node1(10.0.0.1)(即端口 5000 可用)。
远程服务器:node2(10.0.0.10)在端口 8080 上运行 Web 应用程序。

在节点 1 上:

ssh root@node2 -L 5000: node2:8080

从节点1进行测试:

http://本地主机:5000或者http://10.0.0.1:5000

您可以找到更多信息这里

我希望这有帮助。

相关内容