您的位置:首页 > 其它

ssh 端口转发实现外网 80 端口映射到内网 80 端口

2018-01-30 17:09 771 查看
开发中经常需要外网服务映射到本机内网服务的需要,便于调试。

以前都是同事帮着配,这两天自己也看了一下 ssh 端口转发。 同事分分钟钟搞定的事情,自己折腾了 2 天, 真是弱爆了。

最初老想不明白一件事,为什们外网服务器能够找到我的内网机器,现在才明白原来走的是 ssh 隧道。

需求我的内网机器 192.168.9.100, 我的阿里云外网 123.56.86.52, 现在需要所有对 123.56.86.52 80 端口的访问都映射到 192.168.9.100 的 80 端口。

显然 123.56.86.52 访问不到 192.168.9.100, 但 192.168.9.100 能访问到 123.56.86.52 , 所以很简单 ssh 建立一个远程端口转发就行了。

1 在 192.168.9.100 上执行

ssh -N -v -R 3000:127.0.0.1:80 root@123.56.86.52


-R 表示远程转发, 这句话的意思是 通过 ssh 连接到 123.56.86.52,让 123.56.86.52 监听自己的 3000 端口, 所有通过 3000 端口的数据都通过 ssh 转发到 127.0.0.1 的 80 端口。

这里 127.0.0.1 就是 192.168.9.100 这个机器。 在 ssh 连接的时候通道就建立了, 以后所有的通信都走的是这个通道。

2 既然 123.56.86.52 已经监听在 3000 端口了, 接下来就非常简单了, 服务器上用 nginx 做一个反向代理, 把 80 端口代理到 3000 端口就行了

123.56.86.52 上 nginx 配置如下

location / {
root   /usr/share/nginx/html;
index  index.html index.htm;
proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
}


现在外网就成功映射到了我的内网机器

看着同事们 ssh 各种打洞, 各种玩法, 只能膜拜。 ssh 功能强大,通过 ssh 可以在家里随便访问公司内网电脑, 在公司内网电脑也可以远程操作家里的内网电脑。

想学好 ssh 的同学推荐一本书 SSH -The Definitive Guide, 2nd Edition.pdf ,抽空我也要好好学一下。

但最重要的还是要理论结合实际,多看多练。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐