介绍
VNC 或“虚拟网络计算”是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。 对于还不习惯使用命令行的用户,VNC 使管理远程服务器上的文件、软件和设置变得更加容易。
在本指南中,我们将在 Ubuntu 14.04 服务器上设置 VNC,并通过 SSH 隧道安全地连接到它。 我们将使用的 VNC 服务器是 TightVNC,一个快速轻量级的远程控制包。 此选择将确保我们的 VNC 连接即使在较慢的 Internet 连接上也能顺畅稳定。
先决条件
在开始阅读本指南之前,需要先完成几个步骤。
您需要安装一个 Ubuntu 14.04 服务器,并使用具有 sudo
权限的非 root 用户进行配置。 如果您还没有这样做,您可以通过 Ubuntu 14.04 初始服务器设置指南 中的步骤 1-4 来创建此帐户。
拥有非 root 用户后,您可以使用它通过 SSH 连接到您的 Ubuntu 服务器并继续安装您的 VNC 服务器。
第一步 — 安装桌面环境和 VNC 服务器
默认情况下,大多数 Linux 服务器安装不会附带图形桌面环境。 如果是这种情况,我们需要首先安装一个我们可以使用的。 在本例中,我们将安装 XFCE4,它非常轻量级,但仍为大多数用户所熟悉。
我们可以使用 apt
直接从 Ubuntu 的软件存储库中获取 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 等跨平台应用程序。
首先,我们需要在您的本地计算机上创建一个 SSH 连接,以安全地转发到 VNC 的 localhost
连接。 您可以通过 Linux 或 OS X 上的终端通过以下命令执行此操作:
(请记住将 user
和 server_ip_address
替换为您用于通过 SSH 连接到服务器的用户名和 IP。)
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 桌面! 它应该看起来像这样:
确认 VNC 连接正常工作后,将 VNC 服务添加到默认服务,以便在您启动服务器时自动启动:
sudo update-rc.d vncserver defaults
结论
您现在应该在您的 Ubuntu 14.04 服务器上启动并运行一个安全的 VNC 服务器。 现在,您将能够通过易于使用的图形界面管理服务器的文件、软件和设置。