How to make ssh tunnel open to public

如何把内网的服务器通过ssh隧道暴露在公网上面?

superuser上面的答案很清晰

我的需求

在搞微信开发的时候,需要验证自己的服务器,为了在本地开发方便,有俩种思路:
1、在本地开发好以后,将本地代码scp到公网服务器上面,然后再测试(还需要在服务器上面搭建环境)
2、将本地的代码暴露通过服务器暴露到公网上面,别人访问公网的时候,就是访问我本地的代码,方便调试。
选择了第二种方式 直接执行命令就能实现

ssh -CfnNT -R 0.0.0.0:80:localhost:1234 root@server_ip

命令行选项解释:

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

然后需要把 GatewayPorts 设置为yes

vim /etc/ssh/sshd_config

找到GatewayPorts(没有的话,自己加上)改成 GatewayPorts yes

ssh
-R [bind_address:]port:host:hostport
bind_address 参数默认值为空,等价于*:port:host:hostport 并不意味着任何机器,都可以通过
VPS来访问 内网 机器。建立连接后,只能在 VPS ( sshd server ) 本地 访问 「内网」
机器。要在办公网的笔记本上通过 VPS 映射的端口来访问 内网 机器,需要启用 VPS sshd 的
GatewayPorts 参数,允许任意请求地址,通过转发的端口访问内网机器。