Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Wave Terminal新手上手指南:轻松体验内置AI与浏览器增强型终端

Wave Terminal新手上手指南:轻松体验内置AI与浏览器增强型终端

作者头像
FGGIT
发布于 2025-02-11 06:04:07
发布于 2025-02-11 06:04:07
30600
代码可运行
举报
文章被收录于专栏:知识学习知识学习
运行总次数:0
代码可运行

前言

嘿,各位小伙伴们!今天给大家安利一款超级炫酷的终端工具——Wave Terminal。作为一个开发人员,每天与各种终端打交道已经成了家常便饭。从古老的命令行界面到现代的各种增强版工具,每款都有自己的独门绝技。但最近我在GitHub上发现了一款新宠儿——Wave Terminal,不仅颜值爆表,功能更是强大得让人惊叹!

这款开源终端不仅集成了文件预览、网页浏览甚至AI对话等高级特性,还支持macOS、LinuxWindows三大操作系统,无论你用什么平台都能轻松上手。今天我们就以Windows系统为例,详细讲解如何安装Wave Terminal,并结合强大的内网穿透工具——Cpolar,实现跨网络远程连接本地的内网Linux服务器。让你随时随地访问开发环境不再是梦!

image-20250103151245185
image-20250103151245185

1. Wave Terminal安装

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

image-20250103151504333
image-20250103151504333

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

image-20250103151718487
image-20250103151718487

2. 简单使用演示

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

多命令行窗口:

image-20250103153001066
image-20250103153001066

浏览器网页多开:

image-20250103153116860
image-20250103153116860

AI聊天框多开:

image-20250103153235609
image-20250103153235609

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

image-20250103155404145
image-20250103155404145
image-20250103155317530
image-20250103155317530

3. 连接本地Linux服务器

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

3.1 Ubuntu系统安装ssh服务

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install openssh-server

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl status ssh
image-20250103154605709
image-20250103154605709
3.2 远程ssh连接Ubuntu

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

image-20250103160603775
image-20250103160603775

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

image-20250103161049095
image-20250103161049095

4. 安装内网穿透工具

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

下面是安装cpolar步骤:

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

  • 使用一键脚本安装命令:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl https://get.cpolar.sh | sudo sh
  • 安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl status cpolar
image-20240801132301959
image-20240801132301959

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

image-20240801133735424
image-20240801133735424
4.1 创建公网地址

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

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

image-20250103161623105
image-20250103161623105

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

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

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

image-20250103163059312
image-20250103163059312

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

image-20250103163208332
image-20250103163208332
image-20250103163309995
image-20250103163309995

5. 配置固定公网地址

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

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

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

image-20250103163623795
image-20250103163623795

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

image-20250103163713406
image-20250103163713406

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

image-20250103163804171
image-20250103163804171

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

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

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

image-20250103163908885
image-20250103163908885

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

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

image-20250103164132906
image-20250103164132906

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

image-20250103164247844
image-20250103164247844

好了,以上就是用Wave Terminal和Cpolar实现远程SSH连接的全部步骤啦!是不是觉得超级简单又实用呢?如果你在操作过程中遇到任何问题,欢迎随时留言交流,我会第一时间为你解答。更多有趣的内容和项目详情,可以访问我的GitHub主页:https://github.com/wavetermdev/waveterm。期待你的关注和支持,让我们一起探索更多的开发乐趣吧!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C# Windows服务开发
我要开发一个系统服务,服务的作用是定时检测并关闭其他应用的弹窗,但是开发后却发现,服务在运行是压根获取不到任何窗口。
码客说
2022/05/23
1.3K0
C# Windows服务开发
从Win服务启动UI程序
从windows服务启动一个带UI程序的界面,这个需求在xp中是很随意的,从Vista开始似乎没有那么随意了,因为Vista中加入了Session的概念,那么什么是Session,我想这篇文章介绍的应该比我权威的多。Session隔离介绍
用户1175783
2019/09/18
1.1K0
C# 纯控制台创建一个全屏窗口
使用 user32.dll 的 CreateWindowExW 方法就能创建窗口,代码请看
林德熙
2020/08/19
1.1K0
Windows任务管理 连接用户登录信息 通用类[C#版]
通用类名[ComputerLoginUserInfo.cs] 代码如下: using System; //---引用 using System.Runtime.InteropServices; using System.Text; /// <summary> /// Windows 任务管理器登录用户信息 /// author:Stone_W /// date:2011.1.14 /// </summary> public class ComputerLoginUserInfo { #regio
磊哥
2018/04/26
1.2K0
windows logon API
using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Security; using System.Security.Principal; using System.Runtime; using System.Runtime.InteropServices; using System.Web; using System.Web.Se
阿新
2018/04/12
9950
.net下模拟不同身份登陆以获取不同权限
.net下模拟不同身份登陆以获取不同权限     作者:佚名 时间:-- : 出处:互连网 责编:chinaitpower                   摘要:.net下模拟不同身份登陆以获取不同权限      不管是asp.net、web service还是window service,程序运行的时候只有本地计算机的部分权限,有时候需要更大的权限,比如读写某台服务器或域中的一台计算机上的文件等,这就需要更大的权限,比如域帐户权限。  通过获取不同身份的WindowsImpersonationCon
阿新
2018/04/13
1.1K0
【C#】分享基于Win32 API的服务操作类(解决ManagedInstallerClass.InstallHelper不能带参数安装的问题)
------------------201508250915更新------------------
AhDung
2018/09/13
1.5K0
.net下灰度模式图像在创建Graphics时出现:无法从带有索引像素格式的图像创建graphics对象 问题的解决方案。
文章主要介绍了如何通过GDI+绘制椭圆,并给出了具体的实现代码和示例。主要步骤包括:定义一个基于GDI+的Bitmap对象,使用GraphicsPath绘制椭圆,将GraphicsPath转换为Bitmap,并使用RenderOptions.SetBitmapScalingMode进行缩放处理。
用户1138785
2018/01/03
5.8K1
.net下灰度模式图像在创建Graphics时出现:无法从带有索引像素格式的图像创建graphics对象 问题的解决方案。
C#进阶——记一次USB HID的各种坑(x86,x64,win10,win7)
写工控上位机的搬砖人,难免会遇到USB通讯,在一个项目中,我写的上位机使用USB HID协议和STM32通讯传输数据,从零大概花了几天找例程,找资料,最后是各种搬砖修补,终于出来了一个出版DOME,能和下位机实时通讯了。
vv彭
2022/05/10
2.8K2
dotnet C# 全局 Windows 鼠标钩子
本文来告诉大家一个简单的方法实现全局的 鼠标钩子 实现封装方法十分简单,请看代码 public class MouseHookEventArgs : EventArgs { public bool Handle { get; set; } /// <inheritdoc /> public MouseHookEventArgs(MouseMessages mouseMessage) { MouseMes
林德熙
2021/12/23
8120
免杀工具Sharperner浅析
Sharperner是一款C#编写的自动化免杀工具,用来生成免杀的exe文件或者C++的loader,在antiscan.me上为全绿,效果可见一斑。
鸿鹄实验室
2021/07/06
1.1K0
免杀工具Sharperner浅析
【c#】控制台程序的显示和隐藏「建议收藏」
在项目开发的过程中,为了方便调试,利用控制台打印出一些提示信息,当安装到现场的时候,我们担心工作人员手误关掉了程序,所以将控制台隐藏,让程序在后台跑。下面是具体的显示和隐藏的代码:
全栈程序员站长
2022/08/10
4.4K0
使用 C# 自动化关闭电脑
我查阅资料发现有一些可使用 C# 关闭用户电脑的方法,但我觉得都不是很简洁,所以我想在这里寻找一种简单或者使用原生 .NET 关闭的方式。
zls365
2021/04/23
5940
C#中通过API实现的打印类---修改自泥人张版本
using System; using System.Collections; using System.Text; using System.Runtime.InteropServices; using System.Security; using System.ComponentModel; using System.Drawing.Printing; namespace PrinterAPI {  public class Printer  {   private Printer()   {   }  ///泥人张版本加强版   #region API声明   [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]    internal struct structPrinterDefaults   {    [MarshalAs(UnmanagedType.LPTStr)]    public String pDatatype;    public IntPtr pDevMode;    [MarshalAs(UnmanagedType.I4)]    public int DesiredAccess;   };   [DllImport("winspool.Drv", EntryPoint = "OpenPrinter", SetLastError = true,     CharSet = CharSet.Unicode, ExactSpelling = false, CallingConvention = CallingConvention.StdCall),   SuppressUnmanagedCodeSecurityAttribute()]   internal static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPTStr)]    string printerName,    out IntPtr phPrinter,    ref structPrinterDefaults pd);   [DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true,     CharSet = CharSet.Unicode, ExactSpelling = false,     CallingConvention = CallingConvention.StdCall), SuppressUnmanagedCodeSecurityAttribute()]   internal static extern bool ClosePrinter(IntPtr phPrinter);   [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]    internal struct structSize   {    public Int32 width;    public Int32 height;   }   [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]    internal struct structRect   {    public Int32 left;    public Int32 top;    public Int32 right;    public Int32 bottom;   }   [StructLayout(LayoutKind.Explicit, CharSet = CharSet.Unicode)]    internal struct FormInfo1   {    [FieldOffset(0), MarshalAs(UnmanagedType.I4)]    public uint Flags;    [FieldOffset(4), MarshalAs(UnmanagedType.LPWStr)]    public String pName;    [FieldOffset(8)]    public structSize Size;    [FieldOffset(16)]    public structRect ImageableArea;   };   [StructLayout(LayoutKind.Sequential, CharSet = CharSet
jack.yang
2025/04/05
600
dotnet 获取指定进程的输入命令行
我找到两个方法,一个需要引用 C++ 库支持 x86 和 x64 程序,另一个都是C#代码,但是只支持 x64 程序
林德熙
2019/03/13
1.3K0
扫描仪对接(C#)
源代码地址:http://www.codeproject.com/Articles/171666/Twain-for-WPF-Applications-Look-Ma-No-Handles
码客说
2022/09/19
4.8K0
扫描仪对接(C#)
Unity实战篇 | 使Unity打包的exe程序始终保持屏幕最前端【文末送书】
我这里是用了一个西红柿闹钟的项目用作测试,因为之前使用该闹钟想提高自己的工作效率时发现该闹钟老是容易被其他应用程序遮挡住,所以才想到让他持续运行在屏幕最前端不被盖住,从而督促自己。
呆呆敲代码的小Y
2023/04/09
2.2K0
Unity实战篇 | 使Unity打包的exe程序始终保持屏幕最前端【文末送书】
Windows查看硬盘总字节数
Get-PhysicalDisk命令虽然好,但是不适用低版本系统,比如Server2008R2和Win7
Windows技术交流
2023/12/27
4020
进程注入
通过 KernelCallBackTable 的进程注入涉及用自定义有效载荷替换原始回调函数,以便每当调用该函数时,都会触发有效载荷。在这种情况下,使用了 fnCOPYDATA 回调函数。
Khan安全团队
2021/12/31
5750
利用ActiveX实现web页面设置本地默认打印机、纸张大小
通常web技术无法设置本地计算机的默认打印机,包括用代码设置纸张大小,如果业务系统中真遇到这种需求,只能通过其它辅助手段(比如ActiveX)实现。下面这段代码,出自网上被广泛使用的"泥人张打印API"(抱歉未找到原始出处),已经用C#封装了很多关于底层打印的API方法
菩提树下的杨过
2018/09/20
2.1K1
推荐阅读
相关推荐
C# Windows服务开发
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验