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

news2024/11/22 11:18:56

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从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官方粉丝微信群,可以与我直接交流,还有更多福利哦~
在这里插入图片描述

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

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

相关文章

PLSQL创建新用户并导入导出.dmp文件

一、登录管理员账号 用户名密码登录身份说明systemmanagerSYSDBA 或 NORMAL不能以 SYSOPER 登录&#xff0c;可作为默认的系统管理员syschange_on_installSYSDBA 或 SYSOPER不能以 NORMAL 登录&#xff0c;可作为默认的系统管理员scotttigerNORMAL普通用户aqadmaqadmSYSDBA 或…

目标检测论文阅读:RepPoints算法笔记

标题&#xff1a;RepPoints: Point Set Representation for Object Detection 会议&#xff1a;ICCV2019 论文地址&#xff1a;https://ieeexplore.ieee.org/document/9009032/ 官方代码&#xff1a;https://github.com/microsoft/RepPoints 作者单位&#xff1a;北京大学、清华…

Jetpack Compose 深入探索系列六:Compose runtime 高级用例

Compose runtime vs Compose UI 在深入讨论之前&#xff0c;非常重要的一点是要区分 Compose UI 和 Compose runtime。Compose UI 是 Android 的新 UI 工具包&#xff0c;具有 LayoutNodes 的树形结构&#xff0c;它们稍后在画布上绘制其内容。Compose runtime 提供底层机制和…

qsort快速排序的实现以及模拟实现qsort的功能(狠狠的拿捏)

当你为错过太阳而哭泣的时候&#xff0c;你也要再错过群星了。 --泰戈尔 目录 一.qsort快速排序的实现 二.模拟实现一个qsort功能的函数 一.qsort快速排序的实现 下面是 qsort() 函数的声明&#xff1a; void qsort(void *base, size_t nitems, size_t size, int (…

Java——电话号码的字母组合

题目链接 leetcode在线oj题——电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 题目示例…

高压功率放大器在压电驱动器的研究中的应用

实验名称&#xff1a;压电驱动器的电致振动特性研究研究方向&#xff1a;压电驱动器测试目的&#xff1a;旨在分析压电驱动器的电激励振动特性。以双晶压电悬臂梁为对象&#xff0c;基于能量法和热力学平衡方程推导了压电悬臂梁在电压激励下的强迫振动微分方程。利用自行搭建的…

Spring的核心基础——IOC与DI

文章目录一、Spring简介1 Spring介绍1.1 为什么要学1.2 学什么2 初识Spring2.1 Spring家族2.2 Spring发展史3 Spring体系结构3.1 Spring Framework系统架构图4 Spring核心概念问题导入4.1 核心概念二、IOC和DI入门1 IOC入门问题导入1.1 门案例思路分析1.2 实现步骤1.3 实现代码…

【计算机网络】HTTP

一、基础概念 请求和响应报文 客户端发送一个请求报文给服务器&#xff0c;服务器根据请求报文中的信息进行处理&#xff0c;并将处理结果放入响应报文中返回给客户端。 请求报文结构&#xff1a; 第一行是包含了请求方法、URL、协议版本&#xff1b;接下来的多行都是请求首…

大数据开发的工作内容与流程

大数据开发的工作内容与流程离线数据仓库开发实时流处理开发离线数据仓库开发 我们之后在做开发的时候&#xff0c;可能是选择某几个组件来使用。比如做数仓开发&#xff0c;可能就是用sqoop把数据抽到hdfs里&#xff0c;用spark或者mapreduce对这部分数据做一个清洗。 清洗的…

嵌入式开发--STM32H750VBT6开发中,新版本CubeMX的时钟问题,不能设置到最高速度480MHZ

嵌入式开发–STM32H750VBT6开发中&#xff0c;新版本CubeMX的时钟问题&#xff0c;不能设置到最高速度480MHZ 问题描述 之前开发的项目&#xff0c;开发环境是CubeMX6.6.1&#xff0c;H7系列的支持包版本是1.10.0。跑得没问题&#xff0c;最近需要对项目做修改&#xff0c;同…

vue学习(7)vuex的辅助函数封装(基于vue3)

简介&#xff1a; 封装了 mapState&#xff0c;mapGetters&#xff0c;mapActions&#xff0c;mapMutations&#xff0c;用更灵活的方式来使用vuex&#xff0c;主要使用的是vuex的createNamespacedHelpers方法&#xff0c;此方法是帮助重写以特定模块为主的辅助函数 createNa…

Spring Cloud(微服务)学习篇(四)

Spring Cloud(微服务)学习篇(四) 1.nacos实现服务之间传参数 1.1 在dto包(shop-sms-api项目)中创建SmsDTO类 package com.zlz.shop.sms.api.dto;import lombok.Data;Data public class SmsDTO {private String tel; }1.2 复制SmsDTO类到shop-sms-server项目的dto包下面 1.3 …

AVL 树实现

AVL 树的概念 也许因为插入的值不够随机&#xff0c;也许因为经过某些插入或删除操作&#xff0c;二叉搜索树可能会失去平衡&#xff0c;甚至可能退化为单链表&#xff0c;造成搜索效率低。 AVL Tree 是一个「加上了额外平衡条件」的二叉搜索树&#xff0c;其平衡条件的建立是…

buu [MRCTF2020]Easy_RSA 1

题目描述&#xff1a; import sympy from gmpy2 import gcd, invert from random import randint from Crypto.Util.number import getPrime, isPrime, getRandomNBitInteger, bytes_to_long, long_to_bytes import base64from zlib import * flag b"MRCTF{XXXX}" …

【基础算法】单链表的OJ练习(1) # 反转链表 # 合并两个有序链表 #

文章目录前言反转链表合并两个有序链表写在最后前言 上一章讲解了单链表 -> 传送门 <- &#xff0c;后面几章就对单链表进行一些简单的题目练习&#xff0c;目的是为了更好的理解单链表的实现以及加深对某些函数接口的熟练度。 本章带来了两个题目。一是反转链表&#x…

Springboot怎么实现restfult风格Api接口

前言在最近的一次技术评审会议上&#xff0c;听到有同事发言说&#xff1a;“我们的项目采用restful风格的接口设计&#xff0c;开发效率更高&#xff0c;接口扩展性更好...”&#xff0c;当我听到开头第一句&#xff0c;我脑子里就开始冒问号&#xff1a;项目里的接口用到的是…

Django实践-03模型-01表生成模型

文章目录Django实践-03模型Django MTV之模型投票案例1.创建应用1.创建应用2.配置模板文件2.配置关系型数据库MySQL1.创建数据库2.创建表3.按照MySQL依赖4.修改settings.py文件 添加应用 配置数据库5. 基于数据库生成实体类3.使用ORM完成模型的CRUD操作1.新增2.删除3.更新4.查询…

代数小课堂:向量代数(方向比努力更重要)

文章目录 引言I 数字的方向性1.1 箱子受力1.2 爆破逃离方向II 向量的表示法2.1 极坐标方法对向量表示2.2 终点的坐标表示向量III 向量的计算3.1 计算向量的长度和方向3.2 平行四边形法则(计算向量的长度)引言 代数学除了带来了方程和函数工具,还揭示了关于数字的另一个规律,…

C++——特殊类设计

目录 不能被拷贝的类 只能在堆上创建对象的类 只能在栈上创建对象的类 不能被继承的类 只能创建一个对象的类(单例模式) 饿汉模式 懒汉模式 单例对象释放问题 不能被拷贝的类 C98&#xff1a;将拷贝构造函数与赋值运算符重载只声明不定义&#xff0c;并且将其访问权…

React Native学习笔记(2.基本语法-类组件)

1. 基本语法 (1). 引入组件。(2). 继承共通。(3). 定义render函数。(4). 返回文本。(5). export导出 2. 自定义组件&#xff08;引用&#xff09; 将上面定义的"cat“组件引用到当前文件里 (1). inprot引入。(2). 使用 3. 自定义组件&#xff08;参数定义与传参&#x…