在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 服务器正在运行。现在你将能够使用易于使用的图形界面来管理服务器的文件、软件和设置。

相关推荐
宁zz7 小时前
乌班图安装jenkins
运维·jenkins
大丈夫立于天地间7 小时前
ISIS协议中的数据库同步
运维·网络·信息与通信
cg50177 小时前
Spring Boot 的配置文件
java·linux·spring boot
暮云星影8 小时前
三、FFmpeg学习笔记
linux·ffmpeg
rainFFrain8 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
GalaxyPokemon8 小时前
Muduo网络库实现 [九] - EventLoopThread模块
linux·服务器·c++
mingqian_chu8 小时前
ubuntu中使用安卓模拟器
android·linux·ubuntu
Zero_to_zero12349 小时前
解决docker的ubuntu系统中文乱码问题
ubuntu·docker·容器
@郭小茶9 小时前
docker-compose方式部署docker项目
运维·docker·容器