SSH 远程端口转发

使用场景

外网访问一台内网的机器,由于内网机器没有公网IP,无法直接连接,通过SSH,需要使用一台VPS做跳板。
也就是说有三台机器:内网机器,VPS,自己的机器。
目的是自己的机器通过有公网IP的VPS来访问内网的机器。

ssh远程端口转发示意图

使用方法

以下内容均在 root 用户下执行

内网机器执行ssh -C -f -n -N -T -R 2222:localhost:22 root@vps

上面的唯一变量是vps,填写vps的IP即可,其他不用变。这样就可以通过在VPS上面执行下面这句来访问内网机器:

VPS执行 ssh -p 2222 admin@localhost

这句话直接执行,里面内容都不用动,没有变量。
命令行选项解释:

-C 压缩数据传输
-f 将 ssh 转到后台运行,即认证之后,ssh 自动以后台运行。不在输出信息
-n 将 stdio 重定向到 /dev/null,与 -f 配合使用
-N 不执行脚本或命令,即通知 sshd 不运行设定的 shell 通常与 -f 连用
-T 不分配 TTY 只做代理用
-q 安静模式,不输出 错误/警告 信息

成功建立连接后,在 VPS 上面可以监听到 2222 端口:

VPS执行 netstat -lntp

我的用途

坑爹的电信不给公网IP,只能通过这种方法来远程访问我的路由器。。。

如果你不是非常有钱,请不要捐赠,土豪随意