![使用 ssh 进行反向代理](https://linux22.com/image/1555739/%E4%BD%BF%E7%94%A8%20ssh%20%E8%BF%9B%E8%A1%8C%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86.png)
我有以下设置:
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