ssh反向代理实现内网穿透【亲测可用】

news2025/7/13 23:29:55

常用内网穿透方式

1、网卡层映射,包括购买公网ip

推荐指数:👍🏻👍🏻👍🏻👍🏻👍🏻。

缺点:主要申请困难。

2、自己搭建内网穿透服务。

推荐指数:👍🏻👍🏻👍🏻👍🏻。

非常的实用,自己需要一台公网ip的主机,可以购买阿里云服务器、腾讯云服务器,推荐这款45元一年的

3、使用三方平台提供的端口映射、内网穿透服务

推荐指数:👍🏻👍🏻👍🏻

使用cpolar、ngrok、花生壳等三方提供的服务。

缺点:复杂场景问题排查困难,不是很稳定,我这边主要用了这3款打包服务器每天凌晨3点老是容易断开,与官方排查了一周未解决。

本文在文镜老哥的指导下,使用第2种ssh反向代理的方式,通过内网打包服务器,借助外网服务器,实现在家访问我们的打包服务。

一、实现打包机器无密码登录到外网机器

1、添加打包机器ssh公钥到外网服务器

在打包服务器上生成公钥 (一路回车即可生成)

ssh-keygen 

会生成id_rsa.pub文件,这是打包服务器smb服务截图:

image-20220127202810611

这是打包服务器ssh服务截图:

image-20220127202810611

复制打包机器的公钥

cat id_rsa.pub
image-20220127202810611

添加到外网机器的authorized_keys中。

终端切换到外网服务器

cd ../../
cd root/.ssh/
image-20220127202810611

使用vim命令粘贴上去保存

vim authorized_keys
image-20220127202810611

esc退出,然后wq保存

验证:在打包机器上登录外网服务器看是否需要输入密码

ssh root@81.68.175.xx
image-20220127202810611

这里打包机器不用输入密码就可登录,这步验证成功

2、ssh远程连接一段时间会失效的问题

光不输入密码就能登录,仍然存在一个问题,我们的远程登录终端是有超时时间的,这里我们在打包机器上设置重连。

在本地客户端操作:
1.进入/etc/ssh/中:cd /etc/ssh/
2.修改ssh_config文件(sudo vim ssh_config),在末尾添加ServerAliveInterval 30,意思是30s会发送一次向服务器连接的请求,以保持会话始终在线。
3.保存退出(:wq)

image-20220127202810611 image-20220127202810611

验证: 放一段时间不操作,我们的终端仍然是保持链接状态,这步就成功了。

二、在打包服务器上建立打包机器到外网机器的反向代理

1、内网端口映射到外网 [核心]

映射打包机器的8080端口到外网服务器9000端口

ssh -CqTnN -R 81.68.175.xx:9000:127.0.0.1:8080  root@81.68.175.xx &

备注:末尾的&表示后台执行

2、打开公网服务器网管开关

查看内网服务:正常

启动打包机器的jenkins服务(端口号8080),然后查看本地服务是否存在

curl http://127.0.0.1:8080 
image-20220127202810611

查看外网服务:异常

然后我们再访问可能出现访问失败的问题如下:

curl http://81.68.175.xx:9000/
image-20220127202810611

linux解决ssh tunnels端口不能转发问题

我们需要打开公网服务器网管开关/etc/ssh/sshd_config 修改 GatewayPorts yes

vi /etc/ssh/sshd_config 
image-20220127202810611

PasswordAuthentication yes 是否可以密码认证,也修改成yes

image-20220127202810611

同时我们需要在后台打开公网ip的防火墙,我这里使用的是腾讯云服务器的如下

image-20220127202810611

重启sshd

service sshd restart

3、进程管理

ps查看进程

image-20220127202810611

如果进程不对,杀掉进程 (注意9719为PID)

kill -9 9719

备注:linux查看进程命令区别

1、Jobs命令:主要用于显示系统中的任务列表及其运行状态(注意:只在当前终端有效)。

2、fg命令:用于将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行。

3、bg命令:用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加符号&的效果是相同的,都是将其放到系统后台执行。

4、ps命令:查看前后台服务,不区分终端

4、nohup后台运行

现在基本成功,如果你需要退出终端仍能运行,在命令前面加上nohub即可。

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行

nohup ssh -CqTnN -R 81.68.175.xx:9000:127.0.0.1:8080  root@81.68.175.xx &

如果发现当关闭终端时,发现程序也跟着停止,nohup并没有生效:nohup命令执行后,不要直接关闭终端,使用logout/exit命令退出终端会话

logout

三、重启服务解决失效问题

由于局域网ip的变动,我这边需要重启内网穿透服务以维持稳定

新建ssh_connect.sh脚本

#!/bin/bash

APP_NAME=81.68.175.xx:9000:127.0.0.1:8080

echo "try to stop service..."

PID=$(ps -ef | grep $APP_NAME | grep -v grep | awk '{ print $2 }')

if [ -z "$PID" ]; then
  echo Application is already stopped
else
  echo kill $PID
  kill -9 $PID
fi

echo "start service..."
nohup ssh -CqTnN -R 81.68.175.xx:9000:127.0.0.1:8080 root@81.68.175.xx &
ps

再建一个jenkins定时任务内网穿透定时检查脚本

配置半小时定时任务,Jenkins定时构建时间设置参考

H/30 * * * *

执行shell脚本

其中$BUILD_ID是为了解决jenkins 解决构建成功后进程消失的问题

OLD_BUILD_ID=$BUILD_ID
BUILD_ID=dontKillMe
cd /Users/mac/Desktop
sh ssh_connect.sh
BUILD_ID=$OLD_BUILD_ID

四、验证

内网

http://192.168.1.114:8080/jenkins/
image-20220127202810611

外网

http://81.68.175.xx:9000/jenkins/
image-20220127202810611

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb-HTTPTomcatServlet

JavaWeb-HTTP&Tomcat&Servlet 1,Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 在我们日常的生活中,经常会使用浏览器去访问百度、京东、传智官网等这些网站&#xf…

韩顺平老师的linux基础课(复习笔记)

今天听了韩老师的课程,深受启发啊!!! 卖油翁的“我亦无他,唯手熟尔”,只是手法熟练罢了!! 还有老黄牛的坚持,别人把时间都放在努力上,而我把时间放在选择上&a…

微信小程序分类菜单激活状态跟随列表滚动自动切换

这里主要用到微信小程序提供的SelectorQuery获取页面节点信息实现,组件用的是微信小程序的scroll-view 逻辑就是获取右侧盒子的节点信息,获取右侧子分类的节点信息,当子分类滑动到顶部的之后,则切换左侧分类状态,而且当…

【java】冒泡排序/选择排序/希尔排序

文章目录排序分类/排序算法的分类冒泡排序代码1:代码2(优化代码3(算法优化 --当次排序没有进行交换则退出循环代码4(封装为方法代码5(检测冒泡排序时间复杂度选择排序代码1代码2(优化算法代码3(…

FinalShell的下载安装简单使用

目录 一、下载 二、安装 三、简单使用 一、下载 下载地址:SSH工具 SSH客户端 1、进去后选择第一个 FinalSheel SSH工具,远程桌面加速软件,支持Windows,macOS,Linux,版本3.9.7,更新时间2022.10.26; 2、选择需要的版本下载,我选择的是&…

80. 循环神经网络的简洁实现

虽然从零开始实现循环神经网络对了解循环神经网络的实现方式具有指导意义,但并不方便。 本节将展示如何使用深度学习框架的高级API提供的函数更有效地实现相同的语言模型。 我们仍然从读取时光机器数据集开始。 import torch from torch import nn from torch.nn i…

【SpringCloud13】SpringCloud Config分布式配置中心

1.概述 1.1 分布式系统面临的配置问题 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不…

PointNext论文解读

论文地址:https://arxiv.org/abs/2206.04670 github地址:GitHub - guochengqian/PointNeXt: [NeurIPS22] PointNeXt: Revisiting PointNet with Improved Training and Scaling Strategies 本文主要提出优化PointNet的两大关键点. 1) 好的训练策略 2…

如何搭建一个专业的知识库

当客户跟你达成合作关系后,需要持续的关系维护,在一定的销售点,定期和客户沟通,据调查,赢得一个新客户的成本可能是保留一个现有客户的5到25倍,作为营销策略,客户服务支持必须满足他们的期望。建…

[BJDCTF2020]Easy MD5(浅谈PHP弱类型hash比较缺陷)

目录 信息收集 构造payload PHP弱类型hash比较缺陷 0e碰撞 数组MD5 总结 信息收集 看题目应该和MD5加密相关 select * from admin where passwordmd5($pass,true) PHP的MD5函数 string必需。规定要计算的字符串。raw 可选。规定十六进制或二进制输出格式: …

2023-01-17 PostgreSQL 并行查询概述

简介: 大数据时代,人们使用数据库系统处理的数据量越来越大,请求越来越复杂,对数据库系统的大数据处理能力和混合负载能力提出更高的要求。PostgreSQL 作为世界上最先进的开源数据库,在大数据处理方面做了很多工作&…

详谈ORB-SLAM2的单目初始化器Initializer

单目初始化器Initializer类,这个类只用于单目初始化,因为这是ORB-SLAM里遗留的一个类,也是祖传代码,双目和RGBD相机只需要一帧就能初始化,因为双目和RGBD相机拍到的点都是有信息的,但是单目相机就不一定了&…

六种方法在云平台和远程桌面中使用Kali

一、说明 本篇主要介绍方便在云服务器,或者以远程桌面(GUI)形式使用kali配置教程,帮助渗透更加方便顺利。 二、方法 2.1 方法一 云服务提供商预装 备注:预算充足,可以首考虑此方法 优点: 云服…

java 探花交友项目实战 day3 完善个人信息 阿里云OSS文件存储 百度人脸识别

完善用户信息 业务概述 阿里云OSS Data ConfigurationProperties(prefix "tanhua.oss") public class OssProperties { private String accessKey; private String secret; private String bucketName; private String url; //域名 private Strin…

微分方程的特征值解法:斯图姆-刘维尔方程

一.基础概念 前置:福克斯定理和奇点理论 常点的级数解 奇异点的级数解 则至少存在一个如下形式的解(弗罗贝尼乌斯级数): 19世纪中期,常微分方程的研究到了新的阶段,存在定理和斯图姆-刘维尔理论都假设微分方程区域内含解析函数或至少包含连续函数,而另一方面,以前研究…

东莞注塑MES管理系统具有哪些功能

伴随着人们对于物质生活的品质要求越来越高,日用品、医疗保健、汽车工业、电子行业、新能源、家电、包装行业以及建筑等行业对注塑产品的需求量日益突出。注塑企业提供的各种各样的塑料产品已渗透到经济生活的各个领域,为国家经济的各个部门包括轻工业和…

ARM SD卡启动详解

一、主流的外存设备介绍 内存和外存的区别:一般是把这种 RAM(random access memory,随机访问存储器,特点是任意字节读写,掉电丢失)叫内存,把 ROM(read only memory,只读存储器,类似…

15子空间投影

子空间投影 从向量的投影入手,延伸到高维投影,并将投影使用矩阵形式给出。做投影也即向另一个向量上做垂线。上一章讨论的Axb无解时的最优解求解时,并没有解释这个最优解为何“最优”,本节课给出相应的解释。相对简单的二维空间的…

MyBatis -- resultType 和 resultMap

MyBatis -- resultType 和 resultMap一、返回类型&#xff1a;resultType二、返回字典映射&#xff1a;resultMap一、返回类型&#xff1a;resultType 绝⼤数查询场景可以使用 resultType 进⾏返回&#xff0c;如下代码所示&#xff1a; <select id"getNameById"…

企业如何借助制造业ERP系统,做好生产排产管理?

随着市场竞争越来越激烈&#xff0c;生产制造行业订单零碎化趋势越发突出。面对品种多&#xff0c;数量小&#xff0c;批次多&#xff0c;个性化需求也多的生产方式&#xff0c;PMC生产排产管理变得非常困难&#xff1b;同时生产过程还会有各种不确定的临时性因素出现&#xff…