Skip to main content

SSH Tunnel


本地端口转发

Localhost

访问本地 http://localhost:8080 会转发到 192.168.x.xlocalhost:8080

在本机执行
ssh -NL 8080:localhost:8080 root@192.168.xx.xx
参数 含义
8080(冒号前) 本地端口,也就是你本机的 8080 端口,会被 SSH 占用并监听
localhost:8080(冒号后) 远程目标地址和端口,SSH 登录的服务器上要访问的服务

数据流示意

  • 你在本机访问 http://localhost:8080
  • SSH 客户端捕获这个连接,并把流量通过 SSH 隧道发到 SSH 服务器
  • 服务器再把流量转发到 localhost:8080(服务器自己本地的 8080)
  • 响应沿隧道返回到你的本机

所以:

  • 左边的 8080 → 本地监听端口
  • 右边的 8080 → 远程服务器的目标端口

两者不冲突,因为 SSH 会把本地流量映射到远程流量,通过隧道转发,而不是同时在本机占用两次端口。

Remote

访问远程 http://192.168.x.x:8081 会转发到 192.168.x.xlocalhost:8080

在 192.168.x.x 执行
ssh -N -L 0.0.0.0:8081:localhost:8080 root@localhost

如果用同一个端口,会提示被占用。

bind [127.0.0.1]0.0]:8080:8081: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 8081
Could not request local forwarding.