内网服务器端口转发

远程转发

通过远程转发,实现阿里云访问高算。

原理

[公网服务器 123.56.113.160]          [内网服务器 10.11.26.1]
           |                                    |
    ssh -p 2222 localhost  ←--SSH隧道--→  22端口(SSH服务)
           |                                    |
     访问localhost:2222  ----------------→  实际访问内网SSH

内网服务器配置

#!/bin/bash

while true; do
    ssh -N \
        -R 127.0.0.1:2222:localhost:22 \
        -o ServerAliveInterval=60 \
        -o ServerAliveCountMax=3 \
        -o ExitOnForwardFailure=yes \
        guoyingwei@123.56.113.160
    
    echo "[$(date)] Tunnel disconnected. Reconnecting..." | tee -a ~/tunnel.log
    sleep 5
done

直接后台运行该脚本

详细解释

-R 127.0.0.1:2222:localhost:22

远程端口转发(Remote Port Forwarding)

完整格式:-R [绑定地址:]远程端口:目标地址:目标端口

拆解你的配置:

数据流向

公网服务器访问 127.0.0.1:2222

通过SSH隧道反向传输

内网服务器的 localhost:22

内网服务器的SSH服务

bash        -o ServerAliveInterval=60 \

心跳间隔

作用

如果不设置

心跳工作原理

内网服务器 --每60秒发送一次--> 公网服务器
<--收到回复确认连接正常--

如果3次心跳没收到回复(见下面的参数),就认为连接断了

公网服务器使用

ssh -p 2222 guoyingwei@127.0.0.1

退出的时候直接 exit 或按 Ctrl+D,或者直接在tmux中运行

本地转发

本地运行:

ssh -N -L 8890:localhost:8890 guoyingwei@10.11.26.1

直接访问localhost:8890端口,就可以到达远程服务器端的8890

两种端口转发模式区别

-L 本地端口:目标:目标端口  user@中转服务器
   ↑在哪监听 ↑去哪里

-R 远程端口:目标:目标端口  user@中转服务器
   ↑在哪监听 ↑去哪里