简介
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 包:
sudo apt-get update sudo apt-get install xfce4 xfce4-goodies tightvncserver
要完成 VNC 服务器的初始配置,使用 vncserver
命令设置一个安全密码:
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 服务器实例:
vncserver -kill :1
在开始配置新的 xstartup
文件之前,让我们先备份原始文件以防以后可能会用到:
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
现在,可以使用 nano
打开一个新的 xstartup
文件:
nano ~/.vnc/xstartup
将以下命令插入文件中,以便在启动或重新启动 VNC 服务器时自动执行:
#!/bin/bash xrdb $HOME/.Xresources startxfce4 &
文件中的第一个命令 xrdb $HOME/.Xresources
告诉 VNC 的 GUI 框架读取服务器用户的 .Xresources
文件。.Xresources
是用户可以更改图形桌面的某些设置的地方,比如终端颜色、光标主题和字体渲染。
第二个命令简单地告诉服务器启动 XFCE,您将在其中找到舒适地管理服务器所需的所有图形软件。
为确保 VNC 服务器能够正确使用这个新的启动文件,我们需要授予它可执行权限:
sudo chmod +x ~/.vnc/xstartup
步骤三 — 创建 VNC 服务文件
为了方便地控制我们的新 VNC 服务器,我们应该将其设置为 Ubuntu 服务。这将允许我们根据需要启动、停止和重新启动 VNC 服务器。
首先,使用 nano
在 /etc/init.d
中打开一个新的服务文件:
sudo nano /etc/init.d/vncserver
第一块数据将是我们声明一些 VNC 经常引用的常见设置的地方,比如我们的用户名和显示分辨率。
#!/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
命令关键字。
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 服务器实例。
stop) log_action_begin_msg "Stopping vncserver for user '${USER}' on localhost:${DISPLAY}" su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}" ;;
最后一个块是 restart
命令关键字,它简单地将两个先前的命令(stop
和 start
)合并为一个命令。
restart) $0 stop $0 start ;; esac exit 0
一旦所有这些块都在您的服务脚本中,您可以保存并关闭该文件。将此服务脚本设置为可执行,以便您可以使用刚刚设置的命令:
sudo chmod +x /etc/init.d/vncserver
现在尝试使用服务和命令启动一个新的 VNC 服务器实例:
sudo service vncserver start
第四步 — 连接到你的 VNC 桌面
要测试你的 VNC 服务器,你需要使用一个支持通过 SSH 隧道连接 VNC 的客户端。如果你使用 Windows,你可以使用 TightVNC、RealVNC 或 UltraVNC。Mac OS X 用户可以使用内置的屏幕共享,或者可以使用跨平台应用程序如 RealVNC。
首先,我们需要在本地计算机上创建一个安全地转发到 VNC 的 localhost
连接的 SSH 连接。你可以通过 Linux 终端或 OS X 使用以下命令来完成:
(记得用你通过 SSH 连接到服务器时使用的用户名和 IP 地址替换 user
和 server_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 服务器正在运行。现在你将能够使用易于使用的图形界面来管理服务器的文件、软件和设置。