使用 ssh 进行反向代理

使用 ssh 进行反向代理

我有以下设置:

A:我家里的 Linux 笔记本电脑
B:一台我可以通过 VNC 访问的 Windows 计算机,这台 PC 位于限制性防火墙后面
C:与 B 位于同一子网中的 PLC

我想通过 B 在 A:port1 和 C:port2 之间创建一个隧道,这样从 A 到 localhost:port1 的连接最终会连接到 C:port2。

可以通过 ssh 从 B 连接到 A 来实现这一点吗?如果可以,如何实现?

答案1

如果你想使用 ssh,你可以

A)如果 B 上有 ssh 服务器,则通过带端口转发的 ssh 从 A 连接到 B,例如

user@A $  ssh -L 1122:C:1122 B

B)通过 ssh 从 B 连接到 A,使用反向端口转发,如果你同意从 B 到 A 的 ssh 访问

user@B $  ssh -R 1122:C:1122 A

如果您选择方法 B,则可以减少但不能消除对 A 计算机的暴露,因为 ssh 访问可以限制为端口转发。例如,通过 pubkey 进行身份验证,并在 authorized_keys 中设置限制。

auser@A $ cat ~/.ssh/authorized_keys
restrict,port-forwarding ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGiHycmak/rgoAF+A+wG+K8Rk2iYhcVXcuFiajEOxHe3 buser

buser@B $ ssh -v -R 1122:C:1122 -N -i path/to/my/key auser@A

相关内容