Linux反向隧道
跳到导航
跳到搜索
有内网机器 C 和 T,均无公网IP,此时 C 无法向 T 发起连接。
现有一公网 IP 机器 P,C 与 T 均可主动向 P 发起连接。此时可透过 P,可完成 C 向 T 发起连接。需要:
- Env:T 可用证书连接到 P
- Env:P 的 sshd_config 配置打开转发功能:GatewayPorts yes(重启 sshd)
- Env:P 的 firewall 打开相应端口
- T 向 P 主动建立一个 SSH 反向隧道,如:将 P 的 10022 端口转发到 T 的 22 端口
# 在 T 上执行,在 P 上建立反向隧道监听端口 10022 # 超时会断掉,加参数无用:-o TCPKeepAlive=yes ssh -T -f -N -g -R :10022:127.0.0.1:22 PublicIP
参数说明:
- -T 不分配伪终端
- -f 使 ssh 进程在用户输入密码之后转入后台运行
- -N 不执行远程指令,即代理服务器不需执行指令,只作端口转发
- -g 允许代理服务器连接到本地转发端口
- -R 将代理服务器指定端口上的连接转发到本机端口
- :10022:127.0.0.1:22表示本机回环接口(127.0.0.1,也可使用本机其他网络接口的地址,比如以太网 IP 或 WiFi IP)的 22 端口连接到远程主机的 10022 接口,因远程主机 10022 绑定的地址为空,所以远程主机会监听其所有网络接口的 10022 端口