神奇的SSH tunnel

本文介绍了如何利用sshtunnel工具穿透内外网限制,实现外网访问内网服务和内网访问外网服务的场景。详细解释了反向隧道和正向隧道的工作原理,并提供了实例配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们经常要打包给测试,这是一件很烦的事情。zip文件,上传,然后unzip,有时一天打几个包,简直不能忍。要是可以用git更新多简单呀。可惜git是跑在公司内网的,但是测试服务器跑在阿里云,中间隔了很多道墙。墙不可怕,可怕的是找不到穿墙的工具。哈哈,ssh tunnel就是这样神奇的工具,打通外网和内网。使用tunnel感觉就像在用一个精简版的nginx,本质就是代理!

windows 的用户要使用ssh tunnel最好装一个ssh client. Putty is good, xshell is better. 至于linux用户,写几句指令吧。

ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host 
ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host 
ssh -C -f -N -g -D listen_port user@Tunnel_Host

这里不想多说如何使用tunnel了,查一下文档总能解决问题的。讨论一下使用场景。

反向隧道(外网访问内网)

tunnel描述

上图展示了一个十分常用的反向隧道配置,让外网的机器可以访问内网的站点。在远程的机器上 通过netstat可以看到一个端口侦听:

tcp        0      0 0.0.0.0:9800            0.0.0.0:*               LISTEN

看到这里隧道是在tcp传输的,此时隧道已经打通,在remote上可以通过http://localhost:1080来访问本地www.phpmyadmin.me的服务。如果有洁癖,不喜欢1080这个端口,可以通过nginx及host代理一个phpmyadmin.原理是修改host为 127.0.0.1 www.phpmyadmin.me,然后在nginx代理www.phpmyadmin.me到localhost:1080

正向隧道(内网访问外网)

有时我们不想让远程主机上一些服务暴露在外网,但是自己又要访问,这个时候使用tunnel是一种解决方案。原理是配置一个正向隧道,打通本地到远程的内网。其实只要把类型切换为local就可以了。

隧道还有很多应用的场景,把它看作一个神奇的代理就对了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值