SSH隧道应用, 突破网络限制

SSH隧道应用, 突破网络限制

文章配图: 静安寺 摄影: 怡文圣美

文/怡文圣美

这篇文章可以帮你解决下面三个问题:

  1. 不能直连服务器, 要先登陆跳板机, 造成客户端工具无法连接服务器.
  2. 服务器没有公网IP, 且只允许公司IP访问, 要在家里操作要先远程桌面到工作机再登陆服务器, 速度很慢又不稳定. 你有一台公网服务器, 希望能借它牵线搭桥.
  3. 用最简单的办法为服务器增加代理功能.

一. SSH隧道技术

要解决本文开头的三个问题, 最佳方案肯定是ssh隧道. 什么是ssh隧道呢? 请参考阮一峰老师写的SSH原理与运用(二):远程操作与端口转发.

阮一峰老师说到, ssh隧道有三种类型, 正好可以用来解决文章开头提到的三个问题. 这三个类型是:

  1. 本地端口转发.
  2. 远程端口转发.
  3. 绑定本地端口.

ssh隧道使用命令就可以创建, 工作中我们有先进的工具辅助, 可以为你省去不少麻烦, 比如你手头肯定会有的SecureCRT, 或者XShell.

二. 使用隧道绕过跳板机

用通俗的话讲, 这里的隧道在做这么一件事: 服务器A上有个程序, 监听3306端口, 存在一台服务器B分别和你的工作机以及服务器A的网络相通, 你在服务器A和服务器B上都有登陆权限, 隧道可以帮你把服务器A的3306端口映射到服务器B或者你的工作机上, 连接映射后的3306端口就等同于连接服务器A的3306端口.

工作中, 公司IT部为保证服务器安全, 工作机和服务器A之间的网络是不通的, 需要借助充当跳板机角色的服务器B. 你需要先ssh到服务器B, 再ssh到服务器A. 这对控制台下的一般管理还算能接受, 但对于不得不借助客户端工具的任务就无法实施了. 所以, 使用隧道, 把服务器A的3306端口映射到本地, 客户端工具中修改地址为localhost:3306, 客户端工具就能正常连接服务器A了.

使用工具创建隧道前先确保已将服务器B的ssh公钥上传至服务器A, 如果不明白我说的是什么, 请参考阮一峰老师写的SSH原理与运用(一):远程登录的第五节: 公钥登录

这里以XShell为例, SecureCRT类似. 打开服务器B的连接属性, 有一个被"特意"加粗显示的菜单叫隧道, 右边大红框中展示的是已经建立的, 点击"添加"按钮添加新隧道.

连接属性->隧道

类型(方向)选择Local (Outgoing), 源主机一栏填写你想映射到哪里, 侦听端口填写映射后的端口, 这里填写localhost3306, 代表映射到本的3306端口. 目标主机为服务器A的IP, 目标端口为3306, 意思是把服务器A的3306端口映射到本地. 确定后就添加了一条映射规则, 以后只要打开这个连接, 这条映射规则就会生效.

配置隧道

查看菜单里的"隧道窗格"可以显示当前会话所建立的隧道(转义规则标签)以及当前有哪些隧道正在通信(渠道标签).

查看隧道状态

有些客户端工具也自带隧道功能, 比较常见的就是各种数据库连接工具, 如HeidiSQL, MySQL Workbench, Navicat等等

数据库客户端配置隧道

总结: 有了ssh隧道后, 任意被跳板机"挡住"的服务器端口都可以映射到本地或者你能直连的服务器上.

三. 使用反向隧道绕过防火墙

这里的反向隧道应用于这样一种场景: 公司服务器A位于内网, 没有公网IP, 只能被公司IP的电脑登陆. 你有一台公网服务器C, 可以被家中电脑和服务器A主动连接.

利用反向隧道可以让服务器C成为连通家中电脑和公司服务器A的桥梁. 使用反向隧道的大致步骤为:

  1. 在公司登陆服务器A, 和服务器C之间建立反向隧道,
  2. 在家里登录服务器C,
  3. 连接反向隧道从而登陆服务器A.

可以发现服务器A是主动连接服务器C的, 这就顺利突破了公司防火墙和没有公网IP的限制. 这就是反向的含义.

具体的步骤是先用公司的工作机登陆服务器A执行命令:

ssh -R 7000:localhost22 root@ServerC_IP

含义是登陆服务器C后, 将本地的22端口映射到服务器C的7000端口上. 这时候不能退出, 不能关电脑, 不能断网络. 待你回到家后用家中电脑登陆服务器C, 执行:

netstat -lpn | grep 7000

会发现一个被打开的7000端口, 这就是隧道了. 该端口等同于服务器A的22端口, 你执行下面命令就可以登陆服务器A了:

ssh user@localhost -p 7000

工作机上如果退出服务器C的登陆, 隧道就会被关闭, 所以这种方案也只能适合工作机可以长时间不关的人.

读者可能会发现XShell的连接属性->隧道->添加->类型(方向)下拉框中有一个选项叫Remote (Incoming), 这种类型对应的也是反向隧道. 但笔者用这种方式建立的隧道无法使用, 既没有报错, 也没有成功映射端口.有知道这个选项到底干嘛用的请一定要告诉我哦 O(∩_∩)O~.

总结: 在知道反向隧道之前, 你登录公司服务器的方法可能是先远程桌面到工作机, 再登陆公司服务器, 这之间可能还要先登录跳板机, 受远程桌面和网络质量的影响, 这样2次跳板后到达服务器的操作感受会很糟糕. 现在只需要跳转1次, 关键是省去了远程桌面, 操作流畅度会大大提高.

四. 使用代理隧道搭建代理服务器

阮一峰老是在SSH原理与运用(二):远程操作与端口转发中说的绑定本地端口类型指的就是代理隧道, 这点可以从XShell的连接属性->隧道->添加->类型(方向)->Dynamic (SOCKS4/5)就可以看出:

配置代理隧道

这样的隧道建立后, localhost:8080就是代理服务器地址了, 代理的网络环境就是会话所连接的服务器网络.

这种隧道非常适合用来调试线上系统. 比如采用分布式部署的应用, 从公网访问, 均衡负载会随机分配一台主机响应, 想要调试指定的一台主机怎么办? 你可以在均衡负载机上建立代理隧道, 浏览器中配置均衡负载为代理服务器, 浏览器地址栏输入主机的内网IP就可以访问指定的主机了.

总结: 虽然Linux安装ss5不难, 但在公司的服务器上安装就不妥了. 这种基于ssh的ss5代理方式比较轻量级, 无需在服务器上安装什么, 打开关闭很容易, 不相关人也无法使用, 简单又安全.

完.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,490评论 18 139
  • 第一部分 概述当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室...
    fastjrun阅读 1,145评论 0 8
  • 刘奶奶今年也有七八十岁了,身体、思维已大不如从前,比起同龄人,他老人家已经算不错的了。 近日,小周摆弄起了毛线,看...
    公号香草多姿阅读 237评论 0 0
  • 姓名:李淑瑛 224期学员 289期志工 公司:绍兴翔鹰纺织品有限公司 部门:人事行政部 【坚持日精进打卡第179...
    李淑瑛阅读 157评论 0 0
  • 笑来老师分享了一个很有意思的案例: 戴汩,愉悦资本的创始人,他曾经有过一个招聘海报,和普通的招聘海报相比,可以说是...
    呆牛阅读 670评论 0 0