在Ubuntu 14.04上安装和配置VNC的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

简介

VNC,即"虚拟网络计算",是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。对于尚未熟悉使用命令行的用户来说,VNC使得在远程服务器上管理文件、软件和设置变得更加容易。

在本指南中,我们将在 Ubuntu 14.04 服务器上设置 VNC,并通过 SSH 隧道安全地连接到它。我们将使用的 VNC 服务器是 TightVNC,这是一个快速且轻量级的远程控制软件包。选择 TightVNC 将确保即使在较慢的互联网连接上,我们的 VNC 连接也能保持流畅和稳定。

先决条件

在开始本指南之前,需要完成一些步骤。

您需要安装和配置了一个具有 sudo 权限的非 root 用户的 Ubuntu 14.04 服务器。如果您尚未完成此操作,可以按照 Ubuntu 14.04 初始服务器设置指南中的步骤 1-4 创建此帐户。

一旦您拥有了非 root 用户,就可以使用它通过 SSH 登录到您的 Ubuntu 服务器,并继续安装 VNC 服务器。

步骤一 --- 安装桌面环境和 VNC 服务器

默认情况下,大多数 Linux 服务器安装不会包含图形桌面环境。如果是这种情况,我们需要先安装一个可用的桌面环境。在本示例中,我们将安装 XFCE4,它非常轻量级,同时对大多数用户来说也很熟悉。

我们可以直接从 Ubuntu 的软件仓库使用 apt 获取 XFCE 包以及 TightVNC 包:

bash 复制代码
sudo apt-get update
sudo apt-get install xfce4 xfce4-goodies tightvncserver

要完成 VNC 服务器的初始配置,使用 vncserver 命令设置一个安全密码:

bash 复制代码
vncserver

(设置访问密码后,系统会询问您是否要输入一个只读密码。使用只读密码登录的用户将无法使用鼠标或键盘控制 VNC 实例。如果您想要向其他人演示使用您的 VNC 服务器,这是一个有用的选项。)

vncserver 通过创建默认配置文件和连接信息来完成 VNC 的安装。安装了这些软件包后,您就可以配置 VNC 服务器和图形桌面了。

步骤二 --- 配置 VNC 服务器

首先,我们需要告诉 VNC 服务器在启动时执行哪些命令。这些命令位于一个名为 xstartup 的配置文件中。我们的 VNC 服务器已经预先加载了一个 xstartup 文件,但我们需要为我们的 XFCE 桌面使用一些不同的命令。

当 VNC 首次设置时,它会在端口 5901 上启动一个默认服务器实例。此端口称为显示端口,并且被 VNC 称为 :1。VNC 可以在其他显示端口上启动多个实例,如 :2:3 等。在使用 VNC 服务器时,请记住 :X 是一个显示端口,它指的是 5900+X

由于我们将要更改 VNC 服务器的配置,我们首先需要停止在端口 5901 上运行的 VNC 服务器实例:

bash 复制代码
vncserver -kill :1

在开始配置新的 xstartup 文件之前,让我们先备份原始文件以防以后可能会用到:

bash 复制代码
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

现在,可以使用 nano 打开一个新的 xstartup 文件:

bash 复制代码
nano ~/.vnc/xstartup

将以下命令插入文件中,以便在启动或重新启动 VNC 服务器时自动执行:

bash 复制代码
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

文件中的第一个命令 xrdb $HOME/.Xresources 告诉 VNC 的 GUI 框架读取服务器用户的 .Xresources 文件。.Xresources 是用户可以更改图形桌面的某些设置的地方,比如终端颜色、光标主题和字体渲染。

第二个命令简单地告诉服务器启动 XFCE,您将在其中找到舒适地管理服务器所需的所有图形软件。

为确保 VNC 服务器能够正确使用这个新的启动文件,我们需要授予它可执行权限:

bash 复制代码
sudo chmod +x ~/.vnc/xstartup

步骤三 --- 创建 VNC 服务文件

为了方便地控制我们的新 VNC 服务器,我们应该将其设置为 Ubuntu 服务。这将允许我们根据需要启动、停止和重新启动 VNC 服务器。

首先,使用 nano/etc/init.d 中打开一个新的服务文件:

bash 复制代码
sudo nano /etc/init.d/vncserver

第一块数据将是我们声明一些 VNC 经常引用的常见设置的地方,比如我们的用户名和显示分辨率。

bash 复制代码
#!/bin/bash
PATH="$PATH:/usr/bin/"
export USER="user"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"
. /lib/lsb/init-functions

请务必将 user 替换为您设置的非 root 用户,并根据需要更改 1024x768 以使用其他屏幕分辨率进行虚拟显示。

接下来,我们可以开始插入允许我们管理新服务的命令指令。以下块绑定了启动 VNC 服务器所需的命令和正在启动的反馈到 start 命令关键字。

bash 复制代码
case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;

下一个块创建了 stop 命令关键字,它将立即终止现有的 VNC 服务器实例。

bash 复制代码
stop)
log_action_begin_msg "Stopping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

最后一个块是 restart 命令关键字,它简单地将两个先前的命令(stopstart)合并为一个命令。

bash 复制代码
restart)
$0 stop
$0 start
;;
esac
exit 0

一旦所有这些块都在您的服务脚本中,您可以保存并关闭该文件。将此服务脚本设置为可执行,以便您可以使用刚刚设置的命令:

bash 复制代码
sudo chmod +x /etc/init.d/vncserver

现在尝试使用服务和命令启动一个新的 VNC 服务器实例:

bash 复制代码
sudo service vncserver start

第四步 --- 连接到你的 VNC 桌面

要测试你的 VNC 服务器,你需要使用一个支持通过 SSH 隧道连接 VNC 的客户端。如果你使用 Windows,你可以使用 TightVNC、RealVNC 或 UltraVNC。Mac OS X 用户可以使用内置的屏幕共享,或者可以使用跨平台应用程序如 RealVNC。

首先,我们需要在本地计算机上创建一个安全地转发到 VNC 的 localhost 连接的 SSH 连接。你可以通过 Linux 终端或 OS X 使用以下命令来完成:

(记得用你通过 SSH 连接到服务器时使用的用户名和 IP 地址替换 userserver_ip_address。)

ssh -L 5901:127.0.0.1:5901 -N -f -l user server_ip_address

如果你使用图形化 SSH 客户端,如 PuTTY,将 server_ip_address 作为连接 IP,并在程序的 SSH 隧道设置中设置 localhost:5901 作为一个新的转发端口。

接下来,你可以使用 VNC 查看器连接到 localhost:5901 的 VNC 服务器。确保不要忘记末尾的 :5901,因为那是唯一可以从中访问 VNC 实例的端口。

一旦连接成功,你应该看到默认的 XFCE 桌面已准备好进行配置和使用!它应该看起来像这样:

!First VNC

connection

一旦验证了 VNC 连接正常工作,将你的 VNC 服务添加到默认服务中,这样它将在每次启动服务器时自动启动:

sudo update-rc.d vncserver defaults

结论

现在你应该在你的 Ubuntu 14.04 服务器上拥有一个安全的 VNC 服务器正在运行。现在你将能够使用易于使用的图形界面来管理服务器的文件、软件和设置。

相关推荐
Lary_Rock1 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
云飞云共享云桌面3 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq3 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮4 小时前
Linux 使用中的问题
linux·运维
dsywws5 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零6 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
wclass-zhengge6 小时前
Docker篇(Docker Compose)
运维·docker·容器
李启柱6 小时前
项目开发流程规范文档
运维·软件构建·个人开发·设计规范
小林熬夜学编程7 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
力姆泰克8 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节