ssh隧道转发

 

命令解析1

ssh -N -L 9999:c.c.c.c:1343 admin@b.b.b.b

ssh:使用 SSH 连接远程服务器。 -N:不执行远程命令,仅用于端口转发(适用于隧道场景)。 -L 9999:c.c.c.c:1343:设置本地端口转发,其中: 9999(本地端口):本地机器(执行该命令的机器)的 9999 端口。 c.c.c.c:1343(目标地址):SSH 服务器 (b.b.b.b) 能够访问的目标主机 c.c.c.c 的 1343 端口。 这意味着本地 9999 端口的数据会通过 b.b.b.b 这个跳板机,最终转发到 c.c.c.c:1343admin@b.b.b.b:以 admin 用户身份连接 b.b.b.b(跳板机/中转服务器)。 实际作用:你在本地 (localhost) 访问 localhost:9999,相当于在 b.b.b.b 机器上访问 c.c.c.c:1343。 这种方式常用于:访问内网服务(如数据库、Web 服务等)。通过 SSH 隧道穿透防火墙或 NAT 限制。保护数据传输,避免直接暴露内网服务。

命令解析2

ssh -N -L 0.0.0.0:9999:c.c.c.c:1343 admin@b.b.b.b

相比命令1,指定了本机ip,允许非localhost进行连接。例如本机上部署的docker、k8s都可以用这种方式连接。如果是localhost的话是连不通的
要指定0.0.0.0,需要编辑/etc/ssh/sshd_config,添加GatewayPorts yes,之后重启ssh服务sudo systemctl restart sshd

参考