允许多个远程连接到 ssh 动态转发端口

允许多个远程连接到 ssh 动态转发端口

假设我有三台机器

A - 我通过 sshing 连接到的服务器
B - 我通过 sshing 连接到的客户端
C - B 子网中的另一个客户端

现在,我通过在客户端 B 中执行此命令为端口 1235 设置动态端口转发

ssh -D 1235 a@A

其中 a 是服务器 A 上的用户名。

现在,我只能从 B 连接到此端口 1235,因为它绑定到 localhost。如果我将命令修改为

ssh -D C:1235 a@A

那么只有 C 可以连接到 B 的 1235 端口,而 B 本身不能连接。我可以使用第三个选项,即

ssh -D 0.0.0.0:1235 a@A

B 和 C 都可以连接到 B 的端口 1235,但与 B 和 C 位于同一子网中的所有其他计算机也可以连接到。我真正想要的是一种绑定动态端口以仅允许 B 和 C 连接的方法它而不是任何其他机器。我怎样才能实现这个目标?

答案1

使用-gSSH 选项,然后配置防火墙规则以仅允许 C 连接到该端口。

-g      Allows remote hosts to connect to local forwarded ports.

命令将是:

ssh -g -D 1235 a@A

答案2

据我所知,SSH 本身在任何情况下都不会检查源 IP 地址(无论如何它们都可能被欺骗)。因此,您可能必须在 B 上使用数据包过滤器(例如 iptables)并对其进行设置,以便目标端口 1235 的传入 TCP 数据包必须将 B 作为其源地址。

相关内容