如何在没有 root 的情况下代理到可以进行传出连接但没有可访问 IP 的节点上的 Web 服务器?

如何在没有 root 的情况下代理到可以进行传出连接但没有可访问 IP 的节点上的 Web 服务器?

不确定这是否是适合询问的 StackExchange 网站(我主要经常访问 SO),但是由于你们是服务器管理专家,希望你们会发现它相关!

背景:我目前正在尝试在运行以下操作系统的学术集群的计算节点上运行 IPython Notebook 服务器等服务:开放网格调度程序,并能够从我的笔记本电脑访问它们。不幸的是,这些节点似乎已配置/设置了防火墙,因此它们无法接受任何外部连接(除了 Scheduler 接口本身,我可以通过它 rsh 进入),而通过官僚机构来改变这种情况注定会失败。您甚至无法从集群中的另一个节点 ping 计算节点。

理想情况下,我会在用于连接计算节点的 shell 上设置动态端口转发。但 Scheduler 中默认使用的 shell 是 RSH,而不是 SSH,而我的理解是 RSH 不支持端口转发。而要求官僚机构改变这一点,同样是行不通的。

因此,为了解决这个问题,我设想在外部服务器(可以从任何地方访问的服务器,例如 EC2 实例)上运行一个转发程序,锁定的计算节点将通过专用客户端使用长时间运行的 TCP 会话连接到该程序。然后,如果我想连接到计算节点上的端口 8080,我将使用外部服务器作为 SOCKS 代理服务器或 VPN 服务器,外部服务器会将我的命令转发到计算节点客户端程序,后者又将命令转发到 localhost:8080。

是否存在这样的转发程序和客户端,或者有更简单的解决方案?如果没有,我应该写一个吗?我是否忽略了一些显而易见的事情,导致这变得不可能?

谢谢!

答案1

你可以安排一个工作来启动自动SSH并使用它来建立到外部服务器的隧道。然后,您可以通过该外部服务器从笔记本电脑进行连接。话虽如此,我不建议这样做,因为它可能会让您陷入“官僚主义”的麻烦。我敢肯定,无法按照自己想要的方式使用这些计算资源令人沮丧,但您应该明白,典型的 HPC 集群是一种旨在满足某些狭窄需求的资源。该资源可能无法满足您的需求。

相关内容