如何实现一个简单的Ubuntu远程虚拟桌面

文章介绍了noVNC的原理,它是VNC的Web版本,通过websockify将WebSocket流量转换为TCP流。详细步骤包括安装VNC服务端(tigervnc,xserver-xorg-core),设置VNC密码,安装轻量级桌面环境xfce4,启动vncserver,克隆并启动noVNC服务,最后通过浏览器访问noVNC实现远程桌面连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

最近搞的一个项目正好用noVNC实现了一个远程桌面,当然,noVNC主要是由后端部署的,不过在现在这个市场下,前端也必须得跟着卷一下。


一、什么是noVNC?

说到nvVNC, 必须得先介绍下VNC,即是虚拟网络控制台(Virtual Network Console)的缩写,分为server端和client端两部分,分别部署完成后在server端简单的配置即可使用,基于TCP的通信。而noVNC项目是通过取消VNC Client的安装,直接通过浏览器访问noVNC,然后由noVNC间接访问VNC server来达到client web化。
从上面部署方式看到,VNC server仍然保留且没有任何修改,处理的始终是TCP流量,但是浏览器和noVNC之间是在http基础上使用WebSocket交互,由于VNC server 无法处理websocket流量,因此引入了 websockify ,noVNC的姐妹项目,负责把WebSocket流量转换为普通的TCP流,使VNC server正常工作。noVNC其实是一个HTML形式的APP,websockify并充当了一个mini web server的角色,当浏览器访问时,会通过网络加载运行noVNC。
下边是一个多节点的noVNC部署图,可以借助这个图理解下noVNC的工作方式
多节点noVNC部署方式

二、如何部署

1.安装VNC服务端

1.1 安装tigervnc-standalone-server

sudo apt-get install tigervnc-standalone-server

安装过程如图
在这里插入图片描述

1.2 安装tigervnc-standalone-server

sudo apt-get install tigervnc-xorg-extension

安装过程如图
在这里插入图片描述

1.3 安装xserver-xorg-core

上一步提示缺少依赖包,所以装一下子

sudo apt-get install xserver-xorg-core

安装过程如图
在这里插入图片描述

1.4 设置VNC密码

当你用其他电脑的VNC Viewer来连接VNC Server时,需要一个密码。跟你系统用户密码没有关系。

vncpasswd

在这里插入图片描述
查看~/.vnc目录下有passwd,说明密码设置完毕。

2.安装桌面环境

2.1 安装xface4

这里我们的桌面就选择比较轻量的xface4

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

安装过程如图,因为比较长,所以只截了其中一部分
在这里插入图片描述

2.2 为VNC设置桌面环境

查看~/.vnc下有没有xstartup文件,没有的话新建一个

touch xstartup

然后复制以下内容到xstartup

#!/bin/sh

unset SESSION_MANAGER 
unset DBUS_SESSION_BUS_ADDRESS 
startxfce4 &    #启动xface4
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup 
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources 
xsetroot -solid grey    #设置背景色

2.3 给xstartup文件设置可执行权限

sudo chmod u+x ~/.vnc/xstartup 

2.4 启动vnc并查看

# 其中 :2为选择端口,此时表示VNC启动端口为5902
sudo vncserver :2 -localhost no
sudo netstat -ntupl|grep vnc

启动截图如下:
在这里插入图片描述


3.启动noVNC

3.1 clone noVNC项目

git clone https://github.com/novnc/noVNC.git

3.2 启动noVNC服务

./utils/novnc_proxy --vnc localhost:5902

4.访问noVNC

在客户端,找个浏览器直接访问远程ip(nvVNC所在服务器):6081即可

总结

通过上述步骤,我们就可以简单部署一个远程桌面服务了,大家可以简单的跟着试下,在上面的部署步骤中,nvVNC和VNC server是在同一台服务器的,然后访问noVNC的浏览器则在我们的客户端中,总体来说,还是非常简单的。

参考链接

### 配置 Ubuntu 上的远程桌面 为了实现从其他设备连接到 Ubuntu远程桌面功能,通常有两种主要方法:一种是通过安装图形界面并设置 VNC 服务器来提供完整的桌面共享服务;另一种则是利用现有的 RDP 协议支持来进行更高效的远程访问。 #### 安装桌面环境 由于默认情况下 Ubuntu Server 版本不包含任何图形化界面组件[^2],因此如果打算使用带有图形界面的应用程序或者希望通过远程桌面协议获得完整的桌面体验,则需要先安装一个合适的桌面环境。可以考虑 GNOME、KDE 或者 XFCE 这样的轻量级选项之一: ```bash sudo apt update && sudo apt install xfce4 xfce4-goodies -y ``` #### 设置 VNC 服务器 对于希望完全控制远程机器的情况来说,TigerVNC 是一个不错的选择。它允许用户不仅能够查看远端系统的屏幕内容,还可以对其进行操作。需要注意的是,在启动之前应该已经完成了上述提到的桌面环境部署工作: ```bash sudo apt-get install tigervnc-standalone-server vncserver :1 -geometry 1920x1080 -depth 24 ``` 这里创建了一个分辨率为 `1920x1080` 的虚拟显示会话,并指定了颜色深度为 24 位。之后可以根据实际情况调整这些参数以适应不同的需求。 #### 使用 Remmina 实现基于RDP的远程连接 除了传统的 VNC 方式外,现代 Linux 发行版如 Ubuntu 已经内置了对微软 Remote Desktop Protocol (RDP)的支持。这意味着只要正确设置了防火墙规则并且目标主机启用了相应的服务,就可以轻松地借助像 Remmina 这样优秀的客户端工具完成跨平台间的无缝对接[^1]。 要获取当前使用的 IP 地址以便告知给试图建立连接的人,最简便的方式可能就是直接在网络浏览器里查询“my ip”这样的关键词[^3]。不过这种方法得到的结果可能是公网地址而非局域网内的私有IP,具体取决于网络配置情况。 当准备就绪后,在登录界面上输入用户名和密码即可验证身份并进入系统[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A-wliang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值