通过“不受信任”的跳转服务器进行 SSH 端到端加密

通过“不受信任”的跳转服务器进行 SSH 端到端加密

我需要使用第三方服务器作为跳转,在 2 个“客户端”之间进行 SSH 连接,这两个客户端均位于 CGNAT 后面。此用例已在此站点上介绍过,但是:

我该如何做才能使 SSH 流量对于 Jump 服务器不可读;并且保持两个客户端之间的端到端加密?

曾考虑过使用 VPN 服务器,但由于该服务器可以读取客户端数据,因此被放弃了。

答案1

立即出现了一个设计问题:“您是否应该使用您不信任的第三方跳转服务器?”

我做出以下假设:两个客户分别拥有一个服务器,通过 vpn、专线或其他方式连接他们的网络。

假设这个“不安全”的服务器不可信,但你决定无论如何都要使用它(不推荐)来传输或处理两个客户端之间的 ssh 流量,你可以执行以下操作:

在 iptables 中创建端口转发规则(假设这是一台 Linux 机器,例如 centos)。如果您不希望中间服务器参与 SSH 协商(即 SSH 隧道,或者只是 ssh 到中间服务器,然后跳转到目标),那么您需要让中间服务器将您的 SSH 数据包直接转发到目标。

听起来,该服务器的用途似乎是在网络之间提供路由。如果是这样,您需要一个转发规则来实现。理想情况下,您可以让中间服务器将数据包转发到其本地网关(路由器或防火墙),如果它有到目标 SSH 服务器的路径,则应该转发数据包。中间服务器除了转发数据包外什么也不做,并且看不到穿越它的数据。

这需要知道发送 SSH 请求的源子网或单个 IP 以及目标子网。有关实现,请参阅以下链接: https://askubuntu.com/questions/227369/how-can-i-set-my-linux-box-as-a-router-to-forward-ip-packets

希望这可以帮助,

相关内容