我正在尝试将机器 B 配置为代理,这意味着传入的 ssh 连接将被静默重定向到另一台主机,例如 C。作为发起连接的人,我只有 B 的 IP 地址,没有其他的,重定向到 C 应该会自动处理,这样我最终就会到达机器 C,甚至不会注意到中间的跳跃。
A ---> B ---> C
需要注意以下几点:
- 主机B和C位于同一网络。
- 除了 C 之外,还可以有多个端点主机。想象一下 D、E、F 等
- 在稍后阶段,我需要实现转发逻辑,也就是说,端点 C 可以根据发起连接的人而改变。因此,应该能够根据发起连接的人决定将连接转发到哪里。例如,如果人员 X 连接到 B,他可能会被转发到 C,而人员 Y 连接到 B 时会被重定向到 D。
- 所有机器都运行 Linux
我了解使用 SSH 进行本地和远程端口转发的基本知识,但我不确定这是否是正确的方法。我在考虑一些服务,它们等待传入的 SSH 连接,检查它们来自哪里,然后执行重定向到端点。我该怎么做?使用什么工具?只是普通的 ssh 吗?有人可以为我提供一个针对我的场景的基本示例吗?
答案1
可以使用名为 socat 的程序。您需要关闭管理 c 上的安全端口的服务,您的经理管理员的管理员应该收到受影响的计算机的通知。
一个简单的编码可以是:假设我们在这个例子中使用端口 9201,并且计算机 C 的 IP 是 10.11.12.13:(但这只允许一个连接)。
在计算机 B 上 socat tcp-listen:9201,fork,reuseaddr tcp-connect:10.11.12.13:9201
在计算机 C 上 socat OPENSSL-LISTEN:9201,fork,reuseaddr
计算机 C 应首先启动。计算机 B 只是将连接传递给作为登录服务器的计算机 C。
这实现了从 A 到 B 到 C 的双向通信,并且应该保持活跃。
可能需要修改防火墙配置,以及根据需要修改防病毒软件配置。
Socat 的启动方式有太多变量,无法在此提及。
在我看来,超级用户不应该是该程序的运行者。应始终保持谨慎,因为这可能会通过防火墙打开安全漏洞,管理团队应该对此进行批准...