ssh -L本地端口转发远端

本地端口转发通过远端主机请求内网服务

1
2
3
4
5
6
7
8
ssh -i xxx.key \
-L 1010:10.1.1.1:5555 \
root@12.12.12.1 \
-p 1212 \
-o ServerAliveInterval=30 \
-o ServerAliveCountMax=3 \
-o StrictHostKeyChecking=no \
-Nf

命令参数结束

1. ssh

使用 SSH 客户端 建立到远程主机的安全连接。


2. -i xxx.key

指定 私钥文件 xxx.key 来进行认证,而不是用密码。


3. -L 1010:10.1.1.1:5555

本地端口转发(Local Port Forwarding)

  • 本地机器监听 127.0.0.1:1010
  • 任何连接本地 1010 端口的流量会通过 SSH 隧道
  • 最后由远程主机 12.12.12.1 转发到 内网地址 10.1.1.1:5555

这样你在本地访问 localhost:1010,等价于在远程内网访问 10.1.1.1:5555


4. root@12.12.12.1

SSH 连接的远程主机:

  • 用户:root
  • 主机:12.12.12.1

5. -p 1212

远程 SSH 服务监听在 1212 端口(不是默认的 22)。


6. -o ServerAliveInterval=30

保持心跳:

  • 每隔 30 秒向远程发送一个 keepalive 消息
  • 避免连接长时间空闲被防火墙或 NAT 中断

7. -N

告诉 SSH 不执行远程命令,只做端口转发(常见于隧道场景)。


8. -f

让 SSH 在认证成功、建立好隧道后 转入后台运行


** 总结一句话:**

这条命令会在本地 127.0.0.1:1010 建立一个 SSH 隧道,流量通过远程 12.12.12.1:1212,最终转发到内网主机 10.1.1.1:5555,并且用密钥登录,30 秒发一次心跳,隧道在后台运行。