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

使用VNC远程连接Ubuntu - 内网穿透实现公网远程办公

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

使用VNC远程连接Ubuntu - 内网穿透实现公网远程办公

本文关键字:cpolar、Ubuntu、VNC、内网穿透、远程连接

文章目录

  • 使用VNC远程连接Ubuntu - 内网穿透实现公网远程办公
    • 一、VNC配置
      • 1. Ubuntu安装VNC
      • 2. 设置VNC开机启动
    • 二、客户端连接
      • 1. VNC Viewer
      • 2. 远程连接测试
    • 三、内网穿透
      • 1. 安装cpolar【支持脚本一键安装】
      • 2. 创建隧道映射
      • 3. 测试公网远程访问
    • 四、配置固定TCP【可选】
      • 1. 保留公网TCP端口地址
      • 2. 配置固定公网TCP端口地址
      • 3. 测试固定公网地址远程连接
    • 五、小结


一、VNC配置

实现ubuntu系统桌面级别的远程连接,需要在ubuntu 系统中安装VNC。既然是桌面,前提是需要ubuntu 带有图形化界面,如果没有,可以执行以下命令安装图形化界面:

sudo apt install ubuntu-desktop sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal sudo reboot #重启即可看到图形界面

1. Ubuntu安装VNC

在ubuntu中安装VNC:

sudo apt-get install x11vnc

Image

安装LightDM【LightDM从设计上就是支持本地图形界面以获得最好的兼容性】:

sudo apt-get install lightdm

安装过程中会出现以下选项,选择lightdm然后回车即可
在这里插入图片描述

设置密码,设置密码后,会问你是否需要将密码保存在:/home/root1/.vnc/passwd,输入y确认即可

x11vnc -storepasswd

在这里插入图片描述

2. 设置VNC开机启动

  • 创建一个x11vnc.service文件
sudo vim /lib/systemd/system/x11vnc.service

i键进入编辑模式,添加如下信息,!!注意: <USERNAME>替换为自己ubuntu用户名,添加完成后按Esc键退出编辑,然后输入冒号:wq保存

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/<USERNAME>/.vnc/passwd -rfbport 5900 -shared[Install]
WantedBy=multi-user.target

在这里插入图片描述

  • 设置开机启动
sudo systemctl enable x11vnc.service
  • 启动服务
sudo systemctl start x11vnc.service

二、客户端连接

1. VNC Viewer

以Windows系统为例,安装VNC Viewer连接工具,进入VNC官网,下载Windows版VNC连接工具

https://www.realvnc.com/en/connect/download/viewer/

在这里插入图片描述

2. 远程连接测试

  • 下载好后打开使用局域网ip进行连接,端口是5900

在这里插入图片描述

  • 出现密码界面,输入上面设置的密码即可

在这里插入图片描述

  • 出现ubuntu桌面表示成功

在这里插入图片描述

三、内网穿透

本地测试远程连接没问题后,接下来实现在公网环境下连接远程桌面,这里使用cpolar内网穿透工具实现程访问。支持http/https/tcp协议,不限制流量,无需公网ip,也无需设置路由器。

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

1. 安装cpolar【支持脚本一键安装】

在Ubuntu系统中继续执行操作:

  • cpolar 安装(国内使用)
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 或 cpolar短链接安装方式:(国外使用)
curl -sL https://git.io/cpolar | sudo bash
  • 查看版本号,有正常显示版本号即为安装成功
cpolar version
  • token认证

登录cpolar官网后台,点击左侧的验证,查看自己的认证token,之后将token贴在命令行里

cpolar authtoken xxxxxxx

20230227141344

  • 简单穿透测试,有正常生成相应的公网地址即为穿透成功
cpolar http 8080

按ctrl+c退出

  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar
  • 查看服务状态
sudo systemctl status cpolar

2. 创建隧道映射

cpolar安装成功后,在浏览器上访问本地9200端口,【127.0.0.1:9200],使用cpolar邮箱账号登录 web UI管理界面。
在这里插入图片描述
登录成功后,点击左侧仪表盘的隧道管理——创建隧道,创建一个tcp协议的隧道指向本地5900端口:

  • 隧道名称:可自定义,注意不要与已有的隧道名称重复
  • 协议:tcp
  • 本地地址:5900
  • 域名类型:免费选择随机域名
  • 地区:默认China top即可

点击创建

在这里插入图片描述
隧道创建成功后,点击左侧的状态——在线隧道列表,可以看到,刚刚创建的隧道已经有生成了相应的公网地址+公网端口号,将其复制下来
在这里插入图片描述

3. 测试公网远程访问

打开Windows VNC Viewer,使用刚刚所获取的公网地址+公网端口号进行连接。本例为2.tcp.vip.cpolar.cn:13001
在这里插入图片描述

  • 输入密码
    在这里插入图片描述
  • 公网远程连接成功

在这里插入图片描述

四、配置固定TCP【可选】

由于以上创建的隧道是随机地址隧道,该地址会在24小时内变化,为了使连接更加稳定,可以将其配置为固定的TCP地址。

注:配置固定TCP端口地址需要将cpolar升级到专业版套餐或以上。

1. 保留公网TCP端口地址

登录cpolar官网后台,点击左侧的预留,选择保留的TCP地址。

  • 地区:选择China VIP
  • 描述:即备注,可自定义填写

点击保留
在这里插入图片描述
地址保留成功后,系统会生成相应的固定公网地址,将其复制下来
在这里插入图片描述

2. 配置固定公网TCP端口地址

在浏览器上登录cpolar web UI管理界面,http://127.0.0.1:9200/,点击左侧仪表盘的隧道管理——隧道列表,找到前面创建的VNC远程隧道,点击右侧的编辑:
在这里插入图片描述
修改隧道信息,将新保留的固定TCP地址配置到隧道中

  • 端口类型:修改为固定tcp端口
  • 预留的tcp地址:填写保留成功的地址

点击更新
在这里插入图片描述
隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,找到VNC远程桌面隧道,可以看到公网地址已经更新成为了固定TCP地址。
在这里插入图片描述

3. 测试固定公网地址远程连接

接下来测试使用固定TCP端口地址远程Ubuntu桌面,在Windows上打开VNC Viewer,使用固定TCP地址连接,出现密码界面,输入密码:
在这里插入图片描述

  • 远程连接成功:

在这里插入图片描述

五、小结

至此,可以成功实现使用VNC远程连接Ubuntu:通过cpolar穿透VNC服务5900端口,使用所生成的公网地址,实现在外随时随地远程控制内网的Ubuntu,不需要公网IP,也不需要配置路由器。并且,这个公网地址是固定的,不会随机变化,连接稳定。
除了穿透VNC之外,cpolar也可以应用在其他众多场景下,比如公网SSH远程、远程群晖NAS、我的世界联机、微信公众号支付宝调试、公开一个本地Web…【PS:cpolar目前还支持21天退款保证】

扫描下方二维码,加入CSDN官方粉丝微信群,可以与我直接交流,还有更多福利哦~
在这里插入图片描述

相关文章:

使用VNC远程连接Ubuntu - 内网穿透实现公网远程办公

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…...

JavaScript Date 日期对象

文章目录JavaScript Date 日期对象Date 对象Date 对象属性Date 对象方法创建日期设置日期两个日期比较JavaScript Date 日期对象 日期对象用于处理日期和时间。 Date 对象 Date 对象用于处理日期与实际。 创建 Date 对象&#xff1a; new Date(). 以上四种方法同样可以创建…...

婴幼儿常见八大疾病及护理方法

在1岁之前&#xff0c;婴儿的体质还没有完全发育&#xff0c;很容易生病&#xff0c;大多数婴儿在1岁之后都会更好。今天&#xff0c;新的稀有婴儿育儿专家组织了一些婴儿最容易患的疾病和护理方法。1、新生儿黄疸宝宝出生后&#xff0c;你可能会注意到他的皮肤发黄。别担心&am…...

UVa 817 According to Bartjens 数字表达式 DFS ID 迭代加深搜 逆波兰表达式

题目链接&#xff1a;According to Bartjens 题目描述&#xff1a; 给定一个由数字和一个组成的字符串&#xff0c;你需要在数字之间添加,−,∗,-,*,−,∗三种符号&#xff0c;在保证表达式合法的情况下&#xff08;同时形成的新的数字不能有前导零&#xff09;&#xff0c;使表…...

c++基础/类和对象

c基础 2.1名字空间 namespace 防止命名冲突 说明&#xff1a;名字空间可以在全局作用域或其他作用域&#xff08;另一个名字空间&#xff09;内部定义&#xff0c;但不能在函数或类的内部定义。 使用&#xff1a; #include<iostream> using namespace std; //std中包…...

2023年中国人工智能产业趋势报告

易观&#xff1a;尽管2022年人工智能市场发展活跃度不及预期&#xff0c;但2022年对人工智能产业来说无疑是令人激动的一年。年中由DALL-E 2以及其后Stable Diffusion和Midjourney等文本-图像生成模型引起公众对人工智能生成内容的大量关注&#xff0c;年末ChatGPT的横空出世刷…...

STM32定时器的配置,解析预分频系数和重装载值与时钟频率的关系

&#x1f38a;【蓝桥杯嵌入式】专题正在持续更新中&#xff0c;原理图解析✨&#xff0c;各模块分析✨以及历年真题讲解✨都在这儿哦&#xff0c;欢迎大家前往订阅本专题&#xff0c;获取更多详细信息哦&#x1f38f;&#x1f38f;&#x1f38f; &#x1fa94;本系列专栏 - 蓝…...

解决Sql WorkBench中数据库不能重命名的问题

解决Sql WorkBench中数据库不能重命名的问题mysql不支持直接重命名数据库1. 连接到数据库2. 打开菜单&#xff0c;选择迁移向导3. 点击Start Migration4. 填写源数据库的相应参数5. 填写目标数据库的响应参数6. 稍等片刻&#xff0c;点击Next7. 选择你要迁移的数据库。8. 进入一…...

REFL: 联邦学习中智能的设备选择方法

原创 齐天宇 隐私计算研习社 收录于合集#联邦学习54个现有的FL方案使用随机的参与者选择来提高选择过程的公平性&#xff0c;但是这会导致资源的低效利用和较低的训练质量。本文系统地解决了FL中资源效率低效的问题&#xff0c;展示了智能参与者选择和合并来自落后参与者的更新…...

Linux:NFS服务器

目录NFS服务器的介绍例NFS服务器的介绍 1&#xff0c;NFS&#xff08;网络文件系统&#xff09;&#xff0c;主要用于服务器分享提供文件或文件系统等服务&#xff0c;与其他服务器有所不同&#xff0c;主打的是分享&#xff0c;所以没有配置文件&#xff0c;只需要在 /etc/ex…...

电子技术——数字逻辑反相器

电子技术——数字逻辑反相器 在学习完如何通过CMOS数字电路实现组合逻辑&#xff0c;接下来我们评估这种数字CMOS电路的性能。首先&#xff0c;我们考虑最基本的部件——反相器。 电压传导特性 下图是一个反相器的原理图&#xff1a; 在之前&#xff0c;我们已经介绍了MOSFE…...

python的多线程编程之锁

1、 背景概述 在上篇文章中&#xff0c;主要讲述了python中的socket编程的一些基本方面&#xff0c;但是缺少关于锁的相关概念&#xff0c;从而在这篇文章中进行补充。 由于在python中&#xff0c;存在了GIL&#xff0c;也就是全局解释器锁&#xff0c;从而在每次进行获得cpu的…...

Android Framework-进程间通信——Binder

我们知道&#xff0c;同一个程序中的两个函数之间能直接调用的根本原因是处于相同的内存空间中。 比如有以下两个函数A和B&#xff1a; /*Simple.c*/ void A() { B(); } void B() { }因为是在一个内存空间中&#xff0c;虚拟地址的映射规则完全一致&#xff0c;所以函数A和B之…...

有趣的小知识(二)浏览器内的秘密:了解Cookie基础知识

一、简介 Cookie是一种小型的文本文件&#xff0c;由Web服务器发送给Web浏览器&#xff0c;并存储在用户的计算机硬盘上。它通常用于记录用户的偏好、登录状态、购物车信息等&#xff0c;以便在用户下次访问该网站时能够提供更好的用户体验。Cookie通常包含网站的名称、Cookie的…...

Spring框架

DI:依赖注入IOC:控制反转AOP:面向切面IOC容器&#xff1a;存放管理各种对象Spring优势&#xff1a;低耦合。&#xff08;降低组件之间的关联性&#xff0c;实现软件各层之间的解耦&#xff09;声明式事务管理&#xff08;基于AOP来管理&#xff09;和其他框架的整合&#xff08…...

mysql8的表锁排查

information_schema.innodb_trx ##正在运行的事务信息。 sys.innodb_lock_waits ##处于锁等待的关联事务信息。 performance_schema.threads ##SQL线程及线程号、进程号、OS线程号等信息 # 查询锁的情况 select * from performance_schema.data_locks where object_name =t_xxx…...

【C语言】深度理解指针(上)

前言&#x1f30a;谈到指针&#xff0c;想必大家都不陌生。它不仅是C语言的重难点&#xff0c;还是不少C初学者的噩梦。本期我们将深度探讨一些较为复杂的指针以及指针的妙用&#xff0c;带领大家感受指针的魅力&#x1f61d;。首先&#xff0c;我们先来复习复习指针的概念&…...

最近我的视频播放浅学总结

因为想做一个类似苹果的同播共享功能&#xff0c;这一段时间对音视频做了一些浅浅的学习&#xff0c;现简单总结记录。 我的需求是找到一个尽可能简单的方案来两人播放一段视频&#xff0c;并且能够进度和操作同步&#xff0c;所以基本不能有延迟&#xff0c;同时能够显示WebV…...

【C/C++基础知识点】输出n位斐波那契数列

目录 前言什么是斐波那契数列兔子的故事小知识点收尾前言 在软件行业已经有快十年,技术虽然一般般,但是足够应付额解决编程入门的相关问题! 都说十年磨一剑,积累到一定经验,是时候发挥自己的价值,给予入门的同行些许的帮助! 为什么要写收费专栏,其实原因很简单,时间就…...

C语言拔高知识——指针的进阶(万字大文超详细)

在之前的文章中&#xff0c;我已经讲解过了初阶指针的内容&#xff0c;今天就来讲一讲指针的进阶&#xff01; 上篇指针地址&#xff1a;保姆式指针讲解&#xff0c;超详细&#xff0c;适合初学者_指针详解_陈大大陈的博客-CSDN博客 目录 1. 字符指针 2. 指针数组 3. 数组指…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...