[Linux]内网穿透nps

文章目录

  • 基础文件下载
    • 项目地址
    • 下载地址
  • 客户端安装
    • 解压文件
    • 客户端启动
    • 客户端注册到linux系统服务
    • 客户端注册到windows系统服务
      • windows bat 一键管理员注册
      • windows bat 一键管理员取消

基础文件下载

项目地址

https://github.com/ehang-io/nps

下载地址

Releases · ehang-io/nps (github.com)
linux下载

window下载


应用场景:
内网机器(192.168.1.7)有安装服务端口8080
现有公网服务器: 177.77.7.7
想通过177.77.7.7:18808,访问到内网服务器上192.168.1.7:8080
公网服务器安装nps

安装服务
打开nps文件夹执行安装命令

sudo ./nps install

得到如下日志

[root@iZ2ze1fpjxqn44kvd7zk6tZ nps]# sudo ./nps install
2024/01/15 15:10:29 copy file ::/home/nps/conf/clients.json to /etc/nps/conf/clients.json
2024/01/15 15:10:29 copy file ::/home/nps/conf/hosts.json to /etc/nps/conf/hosts.json
......
2024/01/15 15:10:29 copy file ::/home/nps/web/static/webfonts/fa-solid-900.woff2 to /etc/nps/web/static/webfonts/fa-solid-900.woff2
2024/01/15 15:10:29 install ok!
2024/01/15 15:10:29 Static files and configuration files in the current directory will be useless
2024/01/15 15:10:29 The new configuration file is located in /etc/nps you can edit them
2024/01/15 15:10:29 You can start with:
nps start|stop|restart|uninstall|update or nps-update update
anywhere!

修改配置文件
打开nps文件夹(安装完成之后,需要修改/etc/nps/conf/nps.conf)
image.png

vim /etc/nps/conf/nps.conf

修改公网服务器地址与修改自定义的登录用户名密码
web管理页面访问端口

web_host=177.77.7.7
web_username=admin
web_password=admin1234
web_port = 20010

也可修改其他端口避免端口占用,nps默认配置文件使用了80,443,8080,8024端口

#HTTP(S) proxy port, no startup if empty
http_proxy_ip=0.0.0.0
http_proxy_port=20000
https_proxy_port=20001
https_just_proxy=true
#default https certificate setting
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key
##bridge
bridge_type=tcp
bridge_port=20003
bridge_ip=0.0.0.0

启动服务
打开nps文件夹执行启动命令

sudo nps start

得到如下日志

[root@iZ2ze1fpjxqn44kvd7zk6tZ nps]# sudo nps start
[root@iZ2ze1fpjxqn44kvd7zk6tZ nps]# 

登录公网服务器nps后台
浏览器访问:
177.77.7.7:20010
默认账号:admin
默认密码:admin1234

新增客户端
点击客户端,点击新增按钮

可不做配置添加一个

刷新后得到一个配置,点击第一列前的蓝色+号,

得到客户端命令


命令如下(linux)

./npc -server=177.77.7.7:20003 -vkey=ezggqbvl17g0yqgi -type=tcp

命令如下(windows)

npc -server=177.77.7.7:20003 -vkey=ezggqbvl17g0yqgi -type=tcp

客户端安装

解压文件

windows_amd64_client.tar.gz
得到

客户端启动

在当前目录下cmd指定命令(linux)

./npc -server=177.77.7.7:20003 -vkey=ezggqbvl17g0yqgi -type=tcp

(windows)

npc -server=177.77.7.7:20003 -vkey=ezggqbvl17g0yqgi -type=tcp

得到如下输出

2024/01/15 16:18:36.602 [I] [npc.go:231]  the version of client is 0.26.10, the core version of client is 0.26.0
2024/01/15 16:18:36.670 [I] [client.go:72]  Successful connection with server 177.77.7.7:20003

客户端注册到linux系统服务

./npc install -server=177.77.7.7:20003 -vkey=ezggqbvl17g0yqgi -type=tcp

客户端注册到windows系统服务

cmd管理员运行如下命令

npc.exe install -server=177.77.7.7:20003 -vkey=asczxcas1121 -type=tcp

查看服务列表可知,注册成功

修改启动逻辑

公网服务器web端绑定客户端端口
此时可看到客户端已在线


点击隧道


新增隧道
服务端端口,设置公网服务器的18808端口
目标端口设置内网服务器的8080端口


新增之后会显示在线


此时访问

177.77.7.7:18808/swagger-ui.html

即访问了内网服务器192.168.1.7:8080下的服务

附录
一下了两个文件以bat文件格式保存

windows bat 一键管理员注册

@echo &title npc
cd /d "%~dp0"
cacls.exe "%SystemDrive%\System Volume Information" >nul 2>nul
if %errorlevel%==0 goto Admin
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
echo Set RequestUAC = CreateObject^("Shell.Application"^)>"%temp%\getadmin.vbs"
echo RequestUAC.ShellExecute "%~s0","","","runas",1 >>"%temp%\getadmin.vbs"
echo WScript.Quit >>"%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" /f
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
exit:Admin
cmd /k "chcp 65001 && npc install -server=177.77.7.7:20003 -vkey=ezggqbvl17g0yqgi -type=tcp"

windows bat 一键管理员取消

@echo &title npc
cd /d "%~dp0"
cacls.exe "%SystemDrive%\System Volume Information" >nul 2>nul
if %errorlevel%==0 goto Admin
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
echo Set RequestUAC = CreateObject^("Shell.Application"^)>"%temp%\getadmin.vbs"
echo RequestUAC.ShellExecute "%~s0","","","runas",1 >>"%temp%\getadmin.vbs"
echo WScript.Quit >>"%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" /f
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
exit:Admin
cmd /k "chcp 65001 && npc uninstall"

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

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

相关文章

微服务第二轮

学习文档 背景 由于每个微服务都有不同的地址或端口,入口不同 请求不同数据时要访问不同的入口,需要维护多个入口地址,麻烦 前端无法调用nacos,无法实时更新服务列表 单体架构时我们只需要完成一次用户登录、身份校验&#xff…

想在VBA软件中做个登录验证会员授权,用什么云服务器好?

想在VBA中做个登录验证会员授权,用什么服务器好? 腾讯云99起,百度云50元起,不过也不知道到底是一整个虚拟机服务器, 装了WIN2012系统的,还是只是一个虚拟网站只给你一个文件夹可以上传PHP,ASP网页后台。 价…

多维vector定义

多维vector定义 CSP 考试需要定义多维矩阵&#xff0c;我发现我不会定义和初始化&#xff0c;遭罪了。 1. 定义一个 n 维 vector vector<int>a(n, 0) 相当于 int a[n] {0} 2. 定义一个 a * b * c 维度的vector vector<vector<vector<int>>> x(a, ve…

【运维】如何更换Ubuntu默认的Python版本,update-alternatives如何使用

update-alternatives 是一个在 Debian 及其衍生发行版中&#xff08;包括 Ubuntu&#xff09;用于管理系统中可替代项的命令。它可以用于在系统中设置默认的软件版本&#xff0c;例如在不同版本的软件之间进行切换&#xff0c;比如不同的 Python 版本。 要在 Ubuntu 中使用 up…

贪心算法 之 股票 跳跃游戏1and2

第一题&#xff1a; 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返回 你能获得的 最…

6、组件通信详解(父子、兄弟、祖孙)

一、父传子 1、props 用法&#xff1a; &#xff08;1&#xff09;父组件用 props绑定数据&#xff0c;表示为 v-bind:props"数据" &#xff08;v-bind:简写为 : &#xff0c;props可以任意命名&#xff09; &#xff08;2&#xff09;子组件用 defineProps([props&…

Java 编译报错:找不到符号? 手把手教你排查解决!

Java 编译报错&#xff1a;找不到符号&#xff1f; 手把手教你排查解决&#xff01; 在 Java 开发过程中&#xff0c;我们经常会遇到编译器抛出 "找不到符号" 错误。这个错误提示意味着编译器无法在它所理解的范围内找到你所引用的类、变量或方法。这篇文章将带你一步…

一文学习yolov5 实例分割:从训练到部署

一文学习yolov5 实例分割&#xff1a;从训练到部署 1.模型介绍1.1 YOLOv5结构1.2 YOLOv5 推理时间 2.构建数据集2.1 使用labelme标注数据集2.2 生成coco格式label2.3 coco格式转yolo格式 3.训练3.1 整理数据集3.2 修改配置文件3.3 执行代码进行训练 4.使用OpenCV进行c部署参考文…

手写kNN算法的实现-用欧几里德空间来度量距离

kNN的算法思路&#xff1a;找K个离预测点最近的点&#xff0c;然后让它们进行投票决定预测点的类型。 step 1: kNN存储样本点的特征数据和标签数据step 2: 计算预测点到所有样本点的距离&#xff0c;关于这个距离&#xff0c;我们用欧几里德距离来度量&#xff08;其实还有很多…

苍穹外卖笔记-07-菜品管理-增加、删除、修改、查询分页还有菜品起售或停售状态

菜品管理 1 新增菜品1.1 需求分析与设计1.2 代码开发文件上传新增菜品实现 1.3 功能测试 2 菜品分页查询2.1 需求分析和设计2.2 代码开发设计DTO类设计VO类Controller层Service层Mapper层 2.3 功能测试 3 删除菜品3.1 需求分析和设计3.2 代码开发Controller层Service层Mapper层…

机器学习——卷积神经网络

卷积神经网络CNN 多层感知机MLP的层数足够&#xff0c;理论上可以用其提取出二位特征&#xff0c;但是毕竟复杂&#xff0c;卷积神经网络就可以更合适的来提取高维的特征。 而卷积其实是一种运算 二维离散卷积的公式 可以看成g是一个图像的像素点&#xff0c;f是每个像素点对…

2024前端面试准备4-Vue相关

Vue2.0 1. 双向绑定原理 Vue是采用数据劫持发布订阅模式的方式&#xff0c;通过Object.defienProperty()来劫持各个属性的setter\getter,在数据发送变动时发布消息给订阅者&#xff0c;触发相应的监听回调。主要分为以下几个步骤&#xff1a; observe的数据对象进行递归遍历&a…

正态分布公式

正态分布&#xff08;也称为高斯分布&#xff09;的概率密度函数&#xff08;PDF&#xff09;公式如下&#xff1a; 对于均值为 (\mu) &#xff0c;标准差为 (\sigma) 的正态分布&#xff0c;其概率密度函数为&#xff1a; f ( x ) 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2 f(…

【计网复习】应用层总结(不含HTTP和错题重点解析)

应用层总结&#xff08;不含HTTP和错题重点解析&#xff09; 应用层简介 应用层的主要功能常见的应用层协议小林对于应用层通常的解释 网络应用模型 客户端-服务器模型&#xff08;Client-Server Model, C/S&#xff09; 特点优点缺点应用场景 对等网络模型&#xff08;Peer-to…

算法 | 用贪心求解背包动态规划、回溯、分支限界法求解0-1背包

背包问题 普通背包&#xff1a; 贪心时间复杂度:O(nlogn) 首先计算每种物品单位重量的价值Vi/Wi&#xff0c;然后&#xff0c;依贪心 选择策略&#xff0c;将尽可能多的单位重量价值最高的物品装入背包。若 将这种物品全部装入背包后&#xff0c;背包内的物品总重量未超过C&a…

IO流字符流(FileReader与FileWriter)

目录 FileReader 空参read方法 带参read方法&#x1f447; FileWriter void write(intc) 写出一个字符 void write(string str) 写出一个字符串 void write(string str,int off,int len) 写出一个字符串的一部分 void write(char[] cbuf) …

Web前端伯乐在线:探索技术的深度与广度

Web前端伯乐在线&#xff1a;探索技术的深度与广度 在浩瀚的互联网海洋中&#xff0c;Web前端技术犹如一艘航行在波涛汹涌的海洋中的巨轮&#xff0c;承载着无数的创新与可能。而在这个领域里&#xff0c;伯乐在线就像一座灯塔&#xff0c;照亮着前行者的道路&#xff0c;引领…

备战 清华大学 上机编程考试-冲刺前50%,倒数第5天

T1&#xff1a;多项式求和 小K最近刚刚习得了一种非常酷炫的多项式求和技巧&#xff0c;可以对某几类特殊的多项式进行运算。非常不幸的是&#xff0c;小K发现老师在布置作业时抄错了数据&#xff0c;导致一道题并不能用刚学的方法来解&#xff0c;于是希望你能帮忙写一个程序…

C语言 树与二叉树基础部分

树与二叉树基础部分 树的基础概念二叉树的性质二叉树的遍历前序遍历中序遍历后序遍历层序遍历根据遍历结果恢复二叉树 二叉树的创建第一种第二种 二叉树的其他典型操作查找指定元素&#xff08;一般二叉树&#xff09;二叉树的高度&#xff08;深度&#xff09;二叉树的拷贝二叉…

!力扣102. 二叉树的层序遍历

给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] /*** Definition for…