百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

本地测试微信推送解决方法--SSH隧道

ccwgpt 2024-11-17 07:39 42 浏览 0 评论

什么是SSH隧道

首先看下面的例子,我们所面临的大部分情况都和它类似。

  • 内网的机器A,公网的机器B,某服务器C
  • A可以连接B,B可以连接C,但是AC之间不能连接
  • 这个时候如果B能运行一个OpenSSH服务器,那么就可以通过B形成隧道连接AC

跳转机的端口转发服务

我们建立ssh隧道的时候,往往是想通过一台公网的主机或者是大家都可以访问的主机做跳转机,来访问内部或者外部不能直接访问的机器。所以一般像这种情况下,请将跳转机中的ssh服务器中的GatewayPorts设为yes

ssh是linux远程登录的安全协议,是 C/S 模式的架构,配置文件分为服务器端配置文件 [/etc/ssh/sshd_config] 与客户端配置文件默认配置文件[/etc/ssh/ssh_config] 用户配置文件[~/.ssh/config]。sshd_config 是服务端主配置文件这个文件的宿主应当是root,权限最大可以是644

关于sshd_config配置详解,这里不会过多涉及,有兴趣的同学可以自行查找材料,这里主要说下GatewayPorts

1、是否允许远程主机连接本地的转发端口。默认值是”no”。

2、sshd(8) 默认将远程端口转发绑定到loopback地址。这样将阻止其它远程主机连接到转发端口。

3、GatewayPorts 指令可以让 sshd 将远程端口转发绑定到非loopback地址,这样就可以允许远程主机连接了。

4、”no”表示仅允许本地连接,”yes”表示强制将远程端口转发绑定到统配地址(wildcard address), “clientspecified”表示允许客户端选择将远程端口转发绑定到哪个地址。

修改完成之后,重启sshd服务

vim /etc/ssh/sshd_config 
> GatewayPorts yes

systemctl reload sshd

本地SSH隧道

在建立本地SSH隧道之前要清楚下面几个参数:

  • 内网机器B的IP地址(192.168.199.16,端口号(3333)
  • 公网服务器C的IP地址(118.126.110.20),端口号(22)
  • 在清楚了上面的参数后,我们使用下面的命令来建立一个远程SSH隧道,在192.168.199.16的主机上执行下面的命令:

    ssh -Nf -L 192.168.199.16:3333:118.126.110.20:22 192.168.199.16

    这里我们用到了SSH客户端的三个参数,下面我们一一做出解释:

    -N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发

    -f 告诉SSH客户端在后台运行

    -L 做本地映射端口,被冒号分割的三个部分含义分别是最后一个参数是我们用来建立隧道的中间机器的IP地址(192.168.199.16)

    * 需要使用的本地端口号(3333)

    * 需要访问的目标机器IP地址(118.126.110.20)

    * 需要访问的目标机器端口(22)

    那么本地局域网的任何机器访问192.168.199.16:3333都会自动被映射到118.126.110.20:22。

    远程SSH隧道

    内网的机器A,公网的机器B,某服务器C

    A可以连接B,B可以连接C,但是AC之间不能连接

    这个时候如果B能运行一个OpenSSH服务器,那么就可以通过B形成隧道连接AC

    与本地SSH一样,我们在建立远程SSH隧道之前要清楚下面几个参数:

    • 公网机器B的IP地址(118.126.110.20)端口号(2222)
    • 内网的机器A的IP地址(192.168.199.16) 端口号(22)

    在清楚了上面的参数后,我们使用下面的命令来建立一个远程SSH隧道,在192.168.199.16的主机上执行下面的命令:

    ssh -Nf -R 118.126.110.20:2222:192.168.199.16:22 118.126.110.20
    
    # 防止长时间没有连接路由断开
    ssh -Nf -R 118.126.110.20:20241:192.168.199.242:22 118.126.110.20 -o TCPKeepAlive=yes
    

    1、这个命令也可以在局域网里192.168.199.16上执行

    2、192.168.199.16可以直接与公网主机118.126.110.20建立ssh连接

    4、那么任何外网主机通过访问公网主机118.126.110.20:2222就会被连接到192.168.199.16:22

    5、从而可以完成外网穿越NAT到内网的访问,而不需要在内网网关和路由器上做任何操作。

    现在,在IP是118.126.110.20的机器上,我们用下面的命令就可以登陆公司的IP是192.168.199.16的机器了。

    ssh -p 2222 localhost

    SSH隧道需要注意的地方

    自动重连

    隧道可能因为某些原因断开,例如:机器重启,长时间没有数据通信而被路由器切断等等。因此我们可以用程序控制隧道的重新连接,可以使用一个简单的循环控制隧道重新连接。

    保持长时间连接

    有些路由器会把长时间没有通信的连接断开。SSH客户端的TCPKeepAlive选项可以避免这个问题的发生,默认情况下它是被开启的。如果它被关闭了,可以在ssh的命令上加上-o TCPKeepAlive=yes来开启。

    另一种方法是,去掉-N参数,加入一个定期能产生输出的命令。例如: vmstat,下面给出一个这种方法的例子:

    ssh -R 139.199.0.37:2222:192.168.199.16:22 139.199.0.37 "vmstat 30"

    如何将端口绑定到外部地址上

    使用上面的方法,映射的端口只能绑定在127.0.0.1这个接口上。也就是说,只能被本机自己访问到。如何才能让其他机器访问这个端口呢?我们可以把这个 映射的端口绑定在0.0.0.0的接口上,方法是加上参数-b 0.0.0.0。同时还需要打开SSH服务器端的一个选项-GatewayPorts。默认情况下它应当是被打开的。如果被关闭的话,可以在/etc/sshd_config中修改GatewayPorts no为GatewayPorts yes来打开它。

    相关推荐

    土豪农村建个别墅不新鲜 建个车库都用框架结构?

    农村建房子过去都是没车库,也没有那么多豪车,一般直接停在路边或者院子里。现在很多人都会在建房子的时候留一个车库,通过车库可以直接进入客厅,省得雨雪天气折腾。农村土豪都是有钱任性,建房子跟我们普通人不一...

    自建框架结构出现裂缝怎么回事?

    三层自建房梁底与墙体连接处裂缝是结构问题吗?去前帮我姑画了一份三层自建房的图纸,前天他们全部装修好了。我姑丈突然打电话给我说他发现二层的梁底与墙分离了,有裂缝。也就是图纸中前面8.3米那跨梁与墙体衔接...

    钢结构三维图集-框架结构(钢柱对接)

    1、实腹式钢柱对接说明1:1.上节钢柱的安装吊点设置在钢柱的上部,利用四个吊点进行吊装;2.吊装前,下节钢柱顶面和本节钢柱底面的渣土和浮锈要清除干净,保证上下节钢柱对接面接触顶紧;3.钢柱吊装到位后...

    三层框架结构主体自建房设计案例!布局13*12米占地面积156平米!

    绘创意设计乡村好房子设计小编今日头条带来分享一款:三层框架结构主体自建房设计案例!布局13*12米占地面积156平米!本案例设计亮点:这是一款三层新中式框架结构自建房,占地13×12米,户型占地面积...

    Casemaker机箱框架结构3D图纸 STEP格式

    农村自建房新宠!半框架结构凭啥这么火?内行人揭开3个扎心真相

    回老家闲逛,竟发现个有意思的现象:村里盖新房,十家有八家都选了"半框架结构"。隔壁王叔家那栋刚封顶的二层小楼,外墙红砖还露着糙面没勾缝,里头的水泥柱子倒先支棱得笔直,这到底是啥讲究?蹲...

    砖混结构与框架结构!究竟有何区别?千万别被坑!

    农村自建房选结构,砖混省钱但出事真能保命吗?7月建材价格波动期,多地建房户因安全焦虑陷入选择困境——框架结构虽贵30%,却是地震区保命的关键。框架柱和梁组成的承重体系,受力分散得像一张网。砖混靠墙硬扛...

    砖混结构与框架结构,究竟有何区别?千万别被坑!

    农村建房选砖混结构还是框架结构?这个问题算是近期留言板里问得最多的问题了。今天咱们说说二者的区别,帮您选个合适的。01成本区别假如盖一栋砖混结构的房子需要30万,那么换成框架结构,一般要多掏30%的费...

    6个小众却逆天的App神器,个个都是黑科技的代表

    你的手机上有哪些好用的软件?今天我就给大家分享6个小众却逆天的App神器,个个都是黑科技的代表!01*Via浏览器推荐理由:体积极小的浏览器,没有任何广告。使用感受:它的体量真的很小,只有702KB,...

    合肥App开发做一个app需要多少钱?制作周期有多久?

    在移动互联网时代,开发一款APP已成为企业数字化转型与个人创业的重要途径。然而,APP的开发成本与制作周期受功能复杂度、技术架构、团队类型等多重因素影响,差异极大。好牛软件将从这两个维度展开分析,帮助...

    详解应对App臃肿化的五大法则

    编者注:本文转自腾讯ISUX。先来看一张图:图上看到,所有平台上用户花费时间都在减少,除了移动端。观察身边也是如此,回家不开电脑的小伙伴越来越多。手机平板加电视,下班场景全搞定。连那些以前电脑苦手的...

    实战!如何从零搭建10万级 QPS 大流量、高并发优惠券系统

    需求背景春节活动中,多个业务方都有发放优惠券的需求,且对发券的QPS量级有明确的需求。所有的优惠券发放、核销、查询都需要一个新系统来承载。因此,我们需要设计、开发一个能够支持十万级QPS的券系...

    8种移动APP导航设计模式大对比

    当我们确定了移动APP的设计需求和APP产品设计流程之后,开始着手设计APP界面UI或是APP原型图啦。这个时候我们都要面临的第一个问题就是如何将信息以最优的方式组合起来?也许我们对比和了解了其他一些...

    数字资产支付 App 的技术框架

    开发一款功能强大、安全可靠的数字资产支付App需要一个整合了区块链技术、后端服务、前端应用以及第三方集成的全栈技术框架。这个框架的核心在于保障数字资产的安全流通,并将其高效地桥接到传统的法币支付场...

    从MyBatis到App架构:设计模式全景应用指南

    从MyBatis到App架构:设计模式全景应用指南引言在企业级应用和服务端开发领域,MyBatis凭借其灵活、简洁、强大的ORM映射能力被广泛应用。而它之所以能拥有如此优秀的可扩展性和工程可维护性,正...

    取消回复欢迎 发表评论: