ssh实现端口转发
端口转发
1 | ssh -fCNL *:1114:localhost:10004 127.0.0.1 |
本质:
通过 SSH 建立一个“本地端口转发”,让本机所有网卡上的
1114端口,转发到 SSH 对端所看到的localhost:10004。
逐段拆解
| 部分 | 含义 |
|---|---|
ssh |
使用 SSH 建立连接 |
-f |
SSH 认证完成后,把SSH进程放到后台运行 |
-C |
开启压缩 |
-N |
不执行远程 Shell/命令,只做端口转发 |
-L |
本地端口转发(Local Forwarding) |
*:1114 |
在本机所有网卡地址的 1114 端口监听 |
localhost:10004 |
流量转发到 SSH 服务端视角的 localhost:10004 |
127.0.0.1 |
SSH 登录的目标主机 |
最关键的是 -L
标准格式:
1 | ssh -L [本地地址:]本地端口:目标地址:目标端口 SSH服务器 |
你的命令:
1 | *:1114 : localhost:10004 127.0.0.1 |
因此连接关系可以理解成:
1 | 客户端 |
但是这里有一个非常重要的特殊点:
127.0.0.1 同时出现在两个不同位置
1 | ssh ... localhost:10004 127.0.0.1 |
以及:
1 | localhost:10004 |
如果 SSH 服务端就是当前这台机器,那么实际上相当于:
1 | 本机 1114 |
也就是:
1 | *:1114 ─────SSH─────> 127.0.0.1:10004 |
2. *:1114 为什么是 *
这里的 * 表示:
SSH 客户端在本机所有可用网络接口上监听 1114。
例如本机有:
1 | 127.0.0.1 |