返回顶部
首页 > 资讯 > 服务器 >ssh反向代理实现内网穿透【亲测可用】
  • 413
分享到

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

ssh腾讯云服务器 2024-01-21 16:01:34 413人浏览 安东尼
摘要

常用内网穿透方式 网卡层映射,包括购买公网ip 推荐指数:👍🏻👍🏻👍🏻👍&#

常用内网穿透方式

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

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

缺点:主要申请困难。

自己搭建内网穿透服务。

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

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

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

推荐指数:👍🏻👍🏻👍🏻

使用cpolarngrok花生壳等三方提供的服务。

缺点:复杂场景问题排查困难,不是很稳定,我这边主要用了这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查看进程命令区别

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

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

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

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的变动,我这边需要重启内网穿透服务以维持稳定

3.1、ssh服务重启脚本

新建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 &

3.2、定时任务

那么这就需要一个定时任务了,以下定时任务二选一即可

3.2.1、jenkins定时任务

新建一个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
exit
3.2.2、crontab定时任务

crontab是Mac、linux系统自带的定时任务

创建定时任务,终端输入

crontab -e

此时会打开一个vim编辑器,输入定时任务

以下定时任务设置的意思是:在上午8点到11点的第3和第15分钟执行,更多crontab定时任务语法参考这里

3,15 8-11 * * * myCommand cd /Users/mac/Desktop&&sh ssh_connect.sh

然后wq保存退出即可。

备注:另外再次打开终端可能收到定时任务的邮件,查看邮件终端输入mail,然后输入对应的序号,退出exit

四、验证

内网

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

外网

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

来源地址:https://blog.csdn.net/liuxingyuzaixian/article/details/128705262

--结束END--

本文标题: ssh反向代理实现内网穿透【亲测可用】

本文链接: https://lsjlt.com/news/556226.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ssh反向代理实现内网穿透【亲测可用】
    常用内网穿透方式 网卡层映射,包括购买公网ip 推荐指数:👍🏻👍🏻👍🏻👍&#...
    99+
    2024-01-21
    ssh 腾讯云 服务器
  • nginx反向代理内网穿透的方法是什么
    使用nginx作为反向代理进行内网穿透的方法如下:1. 在公网服务器上安装nginx,并确保其正常运行。2. 配置nginx的反向代...
    99+
    2023-09-13
    nginx
  • 什么是内网穿透?内网穿透有什么用?内网穿透如何实现
    什么是内网穿透?内网穿透是什么意思?内网穿透有什么用?怎么搭建内网穿透?没公网IP如何做内网穿透? 一、什么是内网穿透 首先我们对内网和外网这两个名词做个解释: 内网:是内部建立的局域网络或办公网络; 外网:是通过一个网关或网桥与其他网络...
    99+
    2023-09-27
    服务器 网络 运维
  • SSH端口转发实现内网穿透的实现
    我们局域网的机器能够访问外网,但是外网不能访问内网。因为内网访问互联网时候能确定外网的地址,外网却不能确定我们局域网内的具体地址。(ip地址有限)如果 我们在访问外网的时候,这个链接让他保持、不断,那么这个链接就相当于我...
    99+
    2022-06-04
    SSH 内网穿透 SSH端口转发内网穿透
  • 使用FRP(快速反向代理)实现内网穿透——以腾讯云服务器为例
    一、FRP简介 FRP,即快速反向代理技术(fast reverse proxy)。本文的FRP程序是基于github开源项目GitHub - fatedier/frp。当前,该程序可实现:“将位于 NAT 或防火墙后面的本地服务器暴露给互...
    99+
    2023-10-24
    FRP反向代理 内网穿透 windows 云服务器
  • vue中的proxyTable反向代理(亲测有用)
    目录proxyTable反向代理1.打开vue项目->config->index.js2.打开一个vue页面3.npm run dev反向代理的实现原理实现原理程序运行过...
    99+
    2024-04-02
  • 使用frp实现内网穿透
    本篇博客最早发布于实验室公共博客,但已无人维护,现迁移至个人博客 引言 一打五师兄走之前留了一块树莓派给我,暑假闲来无事拿出来玩玩 如果每次都连接显示屏和键盘使用有点麻烦而且低级 正常笔记本和树莓派...
    99+
    2023-09-05
    ubuntu 服务器 linux
  • Nginx内网单机反向代理的实现
    目录1 Nginx安装2 配置Nginx3 修改hosts文件4 测试Nginx内网单机反向代理 Ubuntu18.04虚拟机1 IP:192.168.10.10 Ubuntu18...
    99+
    2024-04-02
  • 无需公网IP,实现公网SSH远程登录MacOS【内网穿透】
    目录 前言 1. macOS打开远程登录 2. 局域网内测试ssh远程 3. 公网ssh远程连接macOS 3.1 macOS安装配置cpolar 3.2 获取ssh隧道公网地址 3.3 测试公网ssh远程连接macOS 4. 配置公网固定...
    99+
    2023-09-29
    tcp/ip ssh macos 网络协议 网络
  • 利用云服务器实现内网穿透
    利用云服务器实现内网穿透有许多潜在的好处,例如: 保护敏感数据:当你的数据通过云服务器传输到公共云或其他第三方应用程序,你的敏感信息就会被加密或匿名化处理,以确保只有授权用户能够访问和操作。这样就可以确保数据不被未经授权的人访问,从而保...
    99+
    2023-10-26
    内网 服务器
  • 使用Nodejs怎么实现内网穿透服务
    这篇文章给大家介绍使用Nodejs怎么实现内网穿透服务,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 局域网内代理我们先来回顾上篇,如何实现一个局域网内的服务代理?因为这个非常简单,所以,直接上代码。const&n...
    99+
    2023-06-15
  • 怎么使用云服务器实现内网穿透
    使用云服务器实现内网穿透可能需要您提供内网IP地址和端口号,以便管理员可以在云主机上创建私有网络。内网穿透的过程可以大致如下: 确定需要穿透的内网地址和端口号:在云服务器上安装相应的客户端程序和脚本,例如:https://ycloud....
    99+
    2023-10-26
    内网 服务器
  • Python一行代码实现文件共享【内网穿透公网访问】
    目录 1. 前言 2. 视频教程 3. 本地文件服务器搭建 3.1 python的安装和设置 3.2 cpolar的安装和注册 4. 本地文件服务器的发布 4.1 Cpolar云端设置 4.2 Cpolar本地设置 5. 公网访问测试 6...
    99+
    2023-08-31
    linux 服务器 git
  • 【内网穿透】Python一行代码实现文件共享,并实现公网访问
    目录 1.前言 2.本地文件服务器搭建 2.1.python的安装和设置 2.2.cpolar的安装和注册 3.本地文件服务器的发布 3.1.Cpolar云端设置 3.2.Cpolar本地设置 4.公网访问测试 5.结语 1.前言 数据...
    99+
    2023-09-21
    python 开发语言
  • 详解使用内网穿透工具Ngrok代理本地服务
    目录1、官网地址2、下载3、添加白名单4、使用5、访问我们在微信开发过程中,需要不断调试,微信服务器无法访问我们本地的接口,那么我们就需要一个内网穿透的工具,将我们本地的服务暴露出去...
    99+
    2024-04-02
  • 如何使用内网穿透工具Ngrok代理本地服务
    这篇文章给大家分享的是有关如何使用内网穿透工具Ngrok代理本地服务的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我们在微信开发过程中,需要不断调试,微信服务器无法访问我们本地的接口,那么我们就需要一个内网穿透的...
    99+
    2023-06-29
  • Java使用黑盒方式模拟实现内网穿透
    目录前言:1. 内网穿透简介2. 具体想法和实现细节2.1 具体想法2.2 实现细节3. 代码实现3.1 目录结构3.2 Client 类3.3 Connection 类3.4 Ms...
    99+
    2023-05-18
    Java黑盒 Java内网穿透
  • 怎么使用云服务器实现内网穿透功能
    1. 什么是内网穿透 内网穿透是指通过互联网将内网中的服务映射到公网上,使得外网用户可以访问内网中的服务。在实际应用中,内网穿透可以用于远程控制、文件共享、Web 服务器等场景。 2. 云服务器实现内网穿透的原理 云服务器可以作为内网穿透...
    99+
    2023-10-26
    内网 功能 服务器
  • 怎么使用云服务器实现内网穿透连接
    使用云服务器实现内网穿透连接的方式有很多种,以下是其中一种常用的方法: 内网IP地址切换:可以使用系统虚拟IP或本地网络地址(LAN地址)来实现内网穿透连接。切换后,可以使用云服务器提供的远程管理功能或其他方式进行管理。 使用Ping功...
    99+
    2023-10-26
    内网 服务器
  • 怎么使用云服务器实现内网穿透服务
    使用云服务器实现内网穿透服务的具体步骤如下: 选择适当的云服务器 :选择一款适合您需要服务的云服务器。有多种云服务器供您选择,包括Amazon Web Services(AMS)、AWS、Google Cloud等。 注册并获取许可证:...
    99+
    2023-10-26
    内网 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作