当前位置: 首页 > article >正文

Wave Terminal + Cpolar:SSH远程访问的跨平台实战+内网穿透配置全解析

文章目录

    • 前言
    • 1. Wave Terminal安装
    • 2. 简单使用演示
    • 3. 连接本地Linux服务器
      • 3.1 Ubuntu系统安装ssh服务
      • 3.2 远程ssh连接Ubuntu
    • 4. 安装内网穿透工具
      • 4.1 创建公网地址
      • 4.2 使用公网地址远程ssh连接
    • 5. 配置固定公网地址

前言

各位开发者朋友,今天为您介绍一款颠覆性操作工具——Wave Terminal。在代码开发与系统维护过程中,命令行工具始终是核心生产力载体。随着终端技术不断迭代升级,交互方式也在持续进化创新。近期在GitHub平台引发热议的Wave Terminal,正以创新架构和极简美学重新塑造终端操作范式。

这款开源项目不仅采用现代化UI框架,更集成多项前沿技术特性。其核心能力覆盖实时文件可视化集成式网页引擎AI交互系统,全面兼容macOS、Linux和Windows三大系统平台。本文将以Windows系统为演示场景,详解Wave Terminal的部署流程,并演示如何搭配Cpolar实现高效的远程连接方案,助力开发者突破网络边界限制,随时接入专属Linux服务器。

特别需要强调的是,当Wave Terminal的远程操控能力Cpolar的内网穿透技术形成协同效应时,可构建出稳定高效的云端开发体系。这种技术组合不仅显著提升编码效率,更有效规避传统内网访问的诸多技术障碍,为跨地域协作提供全新解决方案。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1. Wave Terminal安装

我们可以在它的官方网站进行下载安装:www.waveterm.dev/download

image-20250103151504333

下载后,双击应用程序即可自动安装并打开终端界面:

image-20250103151718487

2. 简单使用演示

默认界面左侧模块可以操作终端命令行,中间区域分别是CPU性能,浏览器,和访问本地文件路径模块,右侧可以看到帮助、提示和与AI进行对话。这些模块都是可以根据自己的需要随意拖动进行位置移动,多开,与自由添加删除的。

多命令行窗口:

image-20250103153001066

浏览器网页多开:

image-20250103153116860

AI聊天框多开:

image-20250103153235609

在本地文件路径中不仅可以查看文档,图片,还能看视频:

image-20250103155404145

image-20250103155317530

3. 连接本地Linux服务器

这里我使用同局域网下的ssh连接Ubuntu进行举例:

3.1 Ubuntu系统安装ssh服务

首先我们需要在ubuntu系统中安装ssh服务:

sudo apt-get install openssh-server

在命令确认时输入“y”,确定在Ubuntu系统中安装SSH。

安装后执行下方命令,显示绿色running提示即为ssh服务已经启动。

sudo systemctl status ssh

image-20250103154605709

3.2 远程ssh连接Ubuntu

想要使用当前的Windows系统通过Wave Terminal远程ssh连接本地局域网内的Linux服务器,直接在Terminal中输入ssh 用户名@服务器IP,提升密码后输入即可连接。

image-20250103160603775

在文件路径中输入用户名@服务器IP和密码登录后,同样也可以远程查看ubuntu系统中的文件。

image-20250103161049095

4. 安装内网穿透工具

现在我们已经成功实现Windows系统使用Wave Terminal进行ssh远程连接ubuntu,但只能在同一局域网下进行(比如同一家庭网络或办公室网络),如果在不同局域网间,这种连接方式就无效了。需要依靠在ubuntu系统中安装cpolar建立TCP数据隧道,才能实现在不同网络下的系统互连。

下面是安装cpolar步骤:

cpolar官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令:
curl https://get.cpolar.sh | sudo sh
  • 安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
sudo systemctl status cpolar

image-20240801132301959

Cpolar安装和成功启动服务后,在浏览器上输入ubuntu主机IP加9200端口即:【http://localhost:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

image-20240801133735424

4.1 创建公网地址

登录进入cpolar web UI管理界面后,点击左侧隧道管理——隧道列表

可以看到安装cpolar后,会自动创建一条ssh隧道。(如果要创建其他服务的公网地址需要点击创建隧道进行配置)

image-20250103161623105

然后点击下方的在线隧道列表,可以看到ssh的公网地址:

image-20250103162535915

4.2 使用公网地址远程ssh连接

现在,我们可以回到Windows系统中的Wave Terminal,在ssh连接本地内网中的ubuntu时,点击Terminal右侧的电脑图标后,在输入框中输入 用户名@粘贴这个使用cpolar生成的公网地址:(复制tcp://后边的连接即可)

image-20250103163059312

输入用户密码即可看到成功使用cpolar生成的公网地址ssh远程连接:

image-20250103163208332

image-20250103163309995

5. 配置固定公网地址

由于以上使用cpolar所创建的TCP隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置保留的TCP地址,该地址为固定公网地址,不会随机变化【ps:cpolar.cn已备案】

注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。

登录cpolar官网,点击左侧的预留,选择保留的TCP地址,添加备注ssh,点击保留。

image-20250103163623795

保留成功后复制保留的TCP地址:

image-20250103163713406

返回登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的ssh隧道,点击右侧的编辑:

image-20250103163804171

修改隧道信息,将保留成功的TCP地址配置到隧道中

  • 域名类型:选择固定TCP端口
  • Sub Domain:填写保留成功的TCP地址

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20250103163908885

此时我们回到Windows系统中的Wave Terminal,对本地内网中的ubuntu ssh连接重新进行配置:

把ubuntu的主机地址替换为这个固定的TCP公网地址与端口,进行连接即可:

image-20250103164132906

可以看到成功使用cpolar生成的固定公网地址ssh远程连接本地ubuntu服务器:

image-20250103164247844

更多有趣的内容和项目详情,可以访问项目的GitHub主页:https://github.com/wavetermdev/waveterm。

通过本次技术部署,我们完成了Wave TerminalCpolar的联动配置,成功搭建了基于SSH协议的远程访问系统。该方案通过打破传统内网架构的约束,实现了跨操作系统的无缝对接。整个实施过程采用模块化架构设计,开发者可根据具体场景灵活调整配置参数,满足多样化开发需求。

对于技术探索者来说,该方案的突出优势体现在两个维度:Wave Terminal的智能终端特性与Cpolar的网络穿透能力形成协同优化,为远程开发场景提供了高可靠解决方案。在工程实践中,可通过扩展集成代码仓库接口或部署自动化测试框架等方式,进一步丰富系统功能。

项目代码已开源至GitHub平台,诚邀开发者参与技术研讨与功能优化。建议将该架构纳入日常开发体系,充分体验云端协作模式带来的效率提升。通过开放生态的共建共享,我们期待与开发者共同完善工具链,为技术社区创造更多价值。

相关文章:

Wave Terminal + Cpolar:SSH远程访问的跨平台实战+内网穿透配置全解析

文章目录 前言1. Wave Terminal安装2. 简单使用演示3. 连接本地Linux服务器3.1 Ubuntu系统安装ssh服务3.2 远程ssh连接Ubuntu 4. 安装内网穿透工具4.1 创建公网地址4.2 使用公网地址远程ssh连接 5. 配置固定公网地址 前言 各位开发者朋友,今天为您介绍一款颠覆性操…...

html使用JS实现账号密码登录的简单案例

目录 案例需求 思路 错误案例及问题 修改思路 案例提供 所需要的组件 <input>标签&#xff0c;<button>标签&#xff0c;<script>标签 详情使用参考&#xff1a;HTML 教程 | 菜鸟教程 案例需求 编写一个程序&#xff0c;最多允许用户尝试登录 3 次。…...

sorted() 函数和sort()函数的区别

在Python中&#xff0c;sorted() 函数和列表的 sort() 方法都用于排序&#xff0c;但它们之间有一些关键的区别&#xff1a; 返回值&#xff1a; sorted()&#xff1a;返回一个新的列表&#xff0c;包含所有排序后的元素&#xff0c;原始列表不会被修改。sort()&#xff1a;对列…...

Solr搜索:比传统数据库强在哪?

Solr 是一个基于 Apache Lucene 的开源搜索平台&#xff0c;广泛用于全文检索和数据分析。与传统的关系型数据库查询相比&#xff0c;Solr 在某些方面具有明显的优势&#xff0c;特别是在处理大规模文本数据和复杂的搜索需求时。以下是 Solr 相对于传统数据库查询的主要优势&am…...

【数据集】基于ubESTARFM法的100m 地温LST数据集(澳大利亚)

目录 数据概述一、输入数据与处理二、融合算法1. ESTARFM(Enhanced STARFM)2. ubESTARFM(Unbiased ESTARFM)代码实现数据下载参考根据论文《Generating daily 100 m resolution land surface temperature estimates continentally using an unbiased spatiotemporal fusion…...

51c自动驾驶~合集55

我自己的原文哦~ https://blog.51cto.com/whaosoft/13935858 #Challenger 端到端碰撞率暴增&#xff01;清华&吉利,框架&#xff1a;低成本自动生成复杂对抗性驾驶场景~ 自动驾驶系统在对抗性场景&#xff08;Adversarial Scenarios&#xff09;中的可靠性是安全落…...

【前端基础】Promise 详解

文章目录 什么是 Promise&#xff1f;为什么要使用 Promise&#xff1f;创建 Promise消费 Promise (使用 Promise)1. .then(onFulfilled, onRejected)2. .catch(onRejected)3. .finally(onFinally) Promise 链 (Promise Chaining)Promise 的静态方法1. Promise.resolve(value)2…...

高性能管线式HTTP请求

高性能管线式HTTP请求:原理、实现与实践 目录 高性能管线式HTTP请求:原理、实现与实践 1. HTTP管线化的原理与优势 1.1 HTTP管线化的基本概念 关键特性: 1.2 管线化的优势 1.3 管线化的挑战 2. 高性能管线式HTTP请求的实现方案 2.1 技术选型与工具 2.2 Java实现:…...

c/c++的opencv膨胀

使用 OpenCV (C) 进行图像膨胀操作详解 图像膨胀 (Dilation) 是形态学图像处理中的另一种基本操作&#xff0c;与腐蚀操作相对应。它通常用于填充图像中的小孔洞、连接断开的物体部分、以及加粗二值图像中的物体。本文将详细介绍膨胀的原理&#xff0c;并演示如何使用 C 和 Op…...

react native搭建项目

React Native 项目搭建指南 React Native 是一个使用 JavaScript 和 React 构建跨平台移动应用的框架。以下是搭建 React Native 项目的详细步骤&#xff1a; 1. 环境准备 安装 Node.js 下载并安装 Node.js (推荐 LTS 版本) 安装 Java Development Kit (JDK) 对于 Androi…...

【CSS】九宫格布局

CSS Grid布局&#xff08;推荐&#xff09; 实现代码&#xff1a; <!doctype html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0"…...

Python用Transformer、Prophet、RNN、LSTM、SARIMAX时间序列预测分析用电量、销售、交通事故数据

原文链接&#xff1a; tecdat.cn/?p42219 在数据驱动决策的时代&#xff0c;时间序列预测作为揭示数据时序规律的核心技术&#xff0c;已成为各行业解决预测需求的关键工具。从能源消耗趋势分析到公共安全事件预测&#xff0c;不同领域的数据特征对预测模型的适应性提出了差异…...

java基础(面向对象进阶高级)泛型(API一)

认识泛型 泛型就等于一个标签(比如男厕所和女厕) 泛型类 只能加字符串&#xff1a; 把别人写好的东西&#xff0c;自己封装。 泛型接口 泛型方法、泛型通配符、上下限 怎么解决下面的问题&#xff1f; API object类 toString: equals: objects类 包装类 为什么上面的Integer爆红…...

学习心得(17--18)Flask表单

一. 认识表单&#xff1a;定义表单类 password2中末端的EqualTo&#xff08;password&#xff09;是将密码2与密码1进行验证&#xff0c;看是否相同 二.使用表单&#xff1a; 运行 如果遇到这个报错&#xff0c;就在该页面去添加 下面是举例&#xff1a; 这就是在前端的展示效…...

AI测试和敏捷测试有什么联系与区别?

AI测试与敏捷测试作为软件质量保障领域的两种重要方法&#xff0c;既有紧密联系也存在显著区别。以下是两者的联系与区别分析&#xff1a; 一、联系 共同目标&#xff1a;提升测试效率与质量 敏捷测试强调通过快速迭代、持续反馈和团队协作确保交付价值&#xff0c;而AI测试通…...

微信小程序进阶第2篇__事件类型_冒泡_非冒泡

在小程序中&#xff0c; 事件分为两种类型&#xff1a; 冒泡事件&#xff0c; 当一个组件上的事件被触发后&#xff0c;该事件会向父节点传递非冒泡事件&#xff0c; 当一个组件上的事件被触发后&#xff0c; 该事件不会向父节点传递。 一 冒泡事件 tap&#xff0c; touchst…...

电机控制学习笔记

文章目录 前言一、电机二、编码器三、开环控制和闭环控制总结 前言 学习了解电机控制技术的一些原理和使用的方法。 一、电机 直流有刷电机 操作简单 使用H桥驱动直流有刷电机 直流有刷电机驱动板 电压检测 电流检测以及温度检测 直流无刷电机 使用方波或者正弦波进行换向…...

什么是前端工程化?它有什么意义

前端工程化是指通过工具、流程和规范,将前端开发从手工化、碎片化的模式转变为系统化、自动化和标准化的生产过程。其核心目标是 提升开发效率、保障代码质量、增强项目可维护性,并适应现代复杂 Web 应用的需求。 一、前端工程化的核心内容 1. 模块化开发 代码模块化:使用 …...

企业网站架构部署与优化-Nginx性能调优与深度监控

目录 #1.1Nginx性能调优 1.1.1更改进程数与连接数 1.1.2静态缓存功能设置 1.1.3设置连接超时 1.1.4日志切割 1.1.5配置网页压缩 #2.1nginx的深度监控 2.1.1GoAccess简介 2.1.2nginx vts简介 1.1Nginx性能调优 1.1.1更改进程数与连接数 &#xff08;1&#xff09;进程数 进程数…...

行列式的线性性质(仅限于单一行的加法拆分)

当然可以&#xff0c;以下是经过排版优化后的内容&#xff0c;保持了原始内容不变&#xff0c;仅调整了格式以提升可读性&#xff1a; 行列式的线性性质&#xff08;加法拆分&#xff09; 这个性质说的是&#xff1a;如果行列式的某一行&#xff08;或某一列&#xff09;的所有…...

JAVA基础编程练习题--50道

一&#xff1a;循环结构 1.1 for循环 水鲜花数 &#xff08;1&#xff09;题目 &#xff08;2&#xff09;难点 如何获取三位数的个位数 如何计算一个数的立方 判断两数值是否相等 &#xff08;3&#xff09;代码 最大公约数 &#xff08;1&#xff09;题目 &#xff08;2&…...

leetcode 93. Restore IP Addresses

题目描述 93. Restore IP Addresses 代码 回溯法 class Solution {vector<string> res; public:vector<string> restoreIpAddresses(string s) {string IP;int part 0;backtracking(s,0,IP,part);return res;}void backtracking(const string &s,int start…...

【东枫科技】基于Docker,Nodejs,GitSite构建一个KB站点

Docker 安装桌面版本&#xff0c;安装Node镜像 运行node镜像 需求 和外部的某个文件夹地址可以绑定端口可以绑定&#xff0c;方便server的访问 docker run -itd --name node-test -v C:/Users/fs/Documents/GitHub:/home/node -p 3000:3000 node进入终端 docker exec -it …...

pytest+allure+allure-pytest 报告输出遇到的问题汇总

文章目录 前言问题一&#xff1a;module allure has no attribute severity_level问题二&#xff1a;ERROR:file or directory not found: ‐vs问题三&#xff1a;生成的 html 报告是空的&#xff0c;明明有测试用例执行完成&#xff0c;但报告没有显示数据 前言 pytestallure…...

Python基础语法(十四):Python常用内置模块及功能

Python标准库提供了丰富的内置模块&#xff0c;无需额外安装即可使用。以下是按功能分类的常用内置模块及其核心功能&#xff1a; 一、文件与操作系统交互 1. os 模块 功能&#xff1a;操作系统接口常用方法&#xff1a;os.getcwd() # 获取当前工作目录 os.listdir() …...

【Opencv+Yolo】_Day1图像基本处理

目录 一、计算机中的视觉&#xff1a; 二、Opencv基本操作&#xff1a; 图片基础处理&#xff1a; 视频基本处理&#xff1a; 图像截取&#xff08;截取&#xff0c;合并&#xff0c;只保留一个元素&#xff09; 图像填充 数值计算 图像融合 阈值判断 图像平滑 图像腐…...

MySQL各种日志类型介绍

概述 MySQL 提供了多种日志类型&#xff0c;用于记录数据库的运行状态、操作历史和错误信息等&#xff0c;这些日志对于故障排查、性能优化、安全审计和数据恢复等具有重要作用。以下是 MySQL 中常见的日志类型及其详细介绍资料已经分类整理好&#xff1a;https://pan.quark.c…...

15.2【基础项目】使用 TypeScript 实现密码显示与隐藏功能

在现代 Web 应用中&#xff0c;允许用户切换密码的可见性不仅提升了用户体验&#xff0c;也让表单填写更便捷。使用 TypeScript 来实现这个功能&#xff0c;不仅具备强类型检查优势&#xff0c;还能提升代码的可维护性。 ✨ 我们要实现的功能 在这篇文章中&#xff0c;我们将…...

Django压缩包形式下载文件

通过web将minio上的文件以压缩包-文件夹-文件的形式下载到本地 import os from bx_mes import settings from io import BytesIO import zipfile from django.http import StreamingHttpResponse class FileRemote(GenericAPIView):def post(self,request):# 压缩包名folder_n…...

晚期NSCLC临床试验终点与分析策略

1. 案例背景 1.1 研究设计 1.1.1 适应症与分组 晚期非小细胞肺癌一线治疗,干预组为新型免疫检查点抑制剂联合化疗,对照组为化疗单药,随机双盲安慰剂对照III期试验。 1.1.2 目标框架 基于FDA或ICH指南,终点定义和分析策略影响试验科学性及监管审评。 2. 终点定义 2.1 主要…...