在 Linux 上通过 TigerVNC 来实现远程桌面共享

需求背景

之前由于疫情的原因,我一直在家里远程办公,于是日常的开会就变成使用腾讯会议。但是呢,我使用的是 Kubuntu 系统,而腾讯会议并没有 Linux 客户端,因此每次线上会议我都要在 Windows10 虚拟机中使用腾讯会议。这样就又有一个问题了,我没办法共享主机(也就是 Kubuntu)中的桌面,只能共享虚拟机(也就是 Windows10)中的桌面。为了能让腾讯会议共享我主机中的桌面,当时我研究了很多种实现方案,最终选择了使用 TigerVNC 来实现一个桌面共享。

实现方案

在主机中运行 TigerVNC Server,然后在虚拟机中运行 TigerVNC 客户端连接主机中运行的服务端,实现主机系统中桌面的共享。

方案优点

  • TigerVNC 是跨平台的
  • TigerVNC 服务端的性能占用较少
  • TigerVNC 显示质量较高,支持配置色彩等功能
  • TigerVNC 传输过程中支持加密
  • TigerVNC 支持多种认证方式
  • TigerVNC 支持只读模式(屏幕共享而非远程桌面控制),当然了也支持远程控制。
  • TigerVNC 十分精简

实现步骤

TigerVNC 的官网是 https://tigervnc.org/

Github 上的发布页面为 https://github.com/TigerVNC/tigervnc/releases

它的二进制文件下载页面为 https://bintray.com/tigervnc/stable/tigervnc

在这个页面中下载最新的二进制文件即可。这里呢,我下载的是 “tigervnc-1.10.1.x86_64.tar.gz”,它的下载地址为: https://bintray.com/tigervnc/stable/download_file?file_path=tigervnc-1.10.1.x86_64.tar.gz

安装

可以在终端中输入下面的命令去下载:

wget https://bintray.com/tigervnc/stable/download_file?file_path=tigervnc-1.10.1.x86_64.tar.gz -O tigervnc-1.10.1.x86_64.tar.gz

然后使用下面的命令去解压:

tar -xzf tigervnc-1.10.1.x86_64.tar.gz

然后进入到解压后的目录中:

cd tigervnc-1.10.1.x86_64

运行服务端

进入到解压后的目录后在该目录执行下面的命令去运行 x0vncserver:

./usr/bin/x0vncserver -rfbport=5900 -SecurityTypes=None

会有类似下面的输出:

Sat Jul  4 15:57:23 2020
 Geometry:    Desktop geometry is set to 1911x1016+0+0
 XDesktop:    Using evdev codemap
 XDesktop:    
 XDesktop:    XTest extension present - version 2.2
 Main:        Listening on port 5900

然后光标就一直停在第一列,说明正在运行中…,它会输出连接的日志。

我们可以按下 Ctrl+C去停止掉服务端的运行。

客户端的使用

服务端运行之后我们就可以运行 vncviewer 客户端去连接了:

./usr/bin/vncviewer

它会启动一个 GUI 客户端:

这里有一个比较重要的配置项,先点击”Options…”,然后切换到”Screen”标签页,取消勾选“Resize remote session to the local window”和”Enable ful-screen mode over all monitors”这两个选项:

这两个选项,前者会将服务端的桌面分辨率调整为客户端的桌面分辨率,而后者则会默认进入到全屏模式。我觉得这两个选项默认启用对新手来说可能连上去之后就一脸蒙蔽,所以这里建议有需要的话再启用这两个选项。

接着我们点”OK”,回到一开始的界面,在”VNC Server:”后输入服务端地址,这里也就是”127.0.0.1:5900“,然后点击”Connect”就可以连接上了。进入共享桌面后,可以按”F8″快捷键来呼出菜单,在菜单中可以关闭连接也可以进入全屏模式。

如果需要在其他设备中连接该服务端,则需要输入服务端对应的 IP 地址,当然也要记得把服务端的防火墙配置一下,放行 5900 端口(下面以 Ubuntu 和 Ubuntu 衍生版系统自带的 ufw 防火墙为例):

sudo ufw allow 5900/tcp

启用密码认证

之前的运行服务端的命令中我们使用了 -SecurityTypes=None 这个参数,它的意思是客户端的连接不需要任何认证,这样子是不安全的,除非你只在局域网中使用并且只有你自己知道地址和端口。为了安全考虑,我建议在运行服务端时加上密码认证。

要启用密码认证,必须先设置密码,设置密码的方法是使用 vncpasswd 命令:

./usr/bin/vncpasswd           
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

即运行 vncpasswd 命令,然后它会让你输入一个密码,输入完按回车,它会让你再次输入刚才的密码验证一下,输入完成按回车,它会询问你是否设置一个只读模式的密码,根据自己的需要选择,这里我不需要,就直接输入”n”然后按回车就完成了密码的设置。它的密码配置文件在当前用户目录下的”.vnc/passwd”,即”$HOME/.vnc/passwd”。我们按 Ctrl+C 停止掉刚才运行的服务端,然后修改一下服务端的参数重新运行服务端:

./usr/bin/x0vncserver -rfbport=5900 -PasswordFile $HOME/.vnc/passwd -SecurityTypes VncAuth,TLSVnc

这时我们再去使用客户端去连接,在点击了”Connect”后会弹出密码输入框,输入密码之后我们才能连接到服务端。

视频教程

针对本次教程我也录制了视频教程,如有需要可以使用微信扫一扫文章下方左边的二维码或者搜索"sunriseydy"关注本站的微信公众号然后回复"tigervnc"即可获取视频观看链接。

在 Ubuntu 上安装 Docker

今天带来的教程是如何根据 Docker 的官方安装文档在 Ubuntu 上安装最新版本的 Docker Engine – Community,也就是 Docker 的社区版本。

系统环境:Ubuntu 18.04 Server

Docker 官方安装文档:https://docs.docker.com/install/linux/docker-ce/ubuntu/

想看更多?点我点我 “在 Ubuntu 上安装 Docker”

使用 VMware 安装 Ubuntu 18.04 Server 版

Ubuntu 每一个发行版都有一个 Server 版,Server 版就是服务器版本,很适合想要学习 Linux 终端以及搭建服务器的朋友们,这里我就给出在虚拟机中安装 Ubuntu 18.04 Server 版的教程。之后 Ubuntu 每一个 LTS 发行版我都会给出相应的 Server 版安装教程。有兴趣的朋友可以关注本站的微信公众号来订阅更新。

想看更多?点我点我 “使用 VMware 安装 Ubuntu 18.04 Server 版”

在Linux上通过路由转发的方式来访问Windows虚拟机中的VPN网络

最近一直都在家远程办公,因此访问内网环境就需要使用VPN。客户使用的VPN网络是深信服的SSLVPN,客户端是EasyConnect。由于我日常开发使用的都是Linux系统,而EasyConnect虽然有Linux客户端,但是在登录了之后会自动注销,也没看到错误日志什么的。最后我只好用vmware创建了一个Windows 10虚拟机,在虚拟机上登录EasyConnect客户端,然后在Linux上设置路由转发来将所有内网的请求都转发到虚拟机中来访问,这样子在Linux中就可以使用VPN内网环境了。下面我来说明一下具体的步骤。

想看更多?点我点我 “在Linux上通过路由转发的方式来访问Windows虚拟机中的VPN网络”

在 Ubuntu 18.04 上使用 Wine 安装 Office 2016 ProPlus

自从把 Ubuntu 作为主用系统之后,没有 Microsoft Office 真是各种不爽,虽然可以用 Google Docs 和 OnlyOffice 临时代替一下,但是在格式上还是没有 Microsoft Office 用的舒服。前几天尝试着使用 Wine 安装 Office 2016,竟然成功了,这里给大家分享一下安装的过程。
想看更多?点我点我 “在 Ubuntu 18.04 上使用 Wine 安装 Office 2016 ProPlus”

在 Ubuntu 中安装以及更改 GNOME 主题

用上 Ubuntu 之后感觉自带的主题不好看怎么办?换啊 :(滑稽) 这里就总结一下如何在 Ubuntu 中安装以及更改 gnome 主题,包括:图标主题(icon theme)、GTK 主题和 GNOME Shell 主题。

先说一下这三个主题的区别,看图比较直观点:Ubuntu 主题说明

上图说明了这三个主题分别作用在哪个区域并在哪里设置,下面再详细说明。

  • 图标主题: 图标主题非常简单。更改图标主题将更改应用程序图标的外观。最好选择支持各种应用程序的图标主题,否则可能会看到一些图标外观保持不变甚至看起来不合适。不过,大部分主题都是更改了系统的图标和一些大众化的应用程序图标。
  • GTK 主题: GTK 是用于构建应用程序的图形用户界面的框架。基本上,它决定了应用程序界面的外观(前提是这个应用程序是 GTK 应用程序,大部分的系统应用程序都是 GTK 应用程序)。目前,Ubuntu使用GTK3,所以你应该下载并使用 GTK3 主题。
  • GNOME Shell 主题: 更改 GNOME Shell 主题将更改 Shell 元素,例如顶部面板,活动概览,桌面通知等。

一些主题包提供了所有的三种类型的主题元素,以提供统一的外观体验。另一方面,我们还可以安装独立的图标或 GTK 或 Shell 主题,当然也可以将它们结合混搭起来。

说完了这些术语,我们就开始进行主题的安装以及更改了。

想看更多?点我点我 “在 Ubuntu 中安装以及更改 GNOME 主题”

在 Ubuntu 中使用 lm_sensors 来显示 CPU 和主板温度、风扇转速、电压等数据

最近在使用 Ubuntu 的过程中发现有时候风扇转的特别厉害,就想知道 CPU 的温度,在 Windows 中可以通过 AIDA 来查看传感器感知到的 CPU 温度,那在 Ubuntu 中有没有这样的软件可以查看传感器的数据呢?当然是有的,这里就介绍一个命令行工具:lm_sensors 想看更多?点我点我 “在 Ubuntu 中使用 lm_sensors 来显示 CPU 和主板温度、风扇转速、电压等数据”