如何在Debian8上设置VNC服务器

来自菜鸟教程
跳转至:导航、​搜索

介绍

VNC(虚拟网络计算)是一个系统,它使用户能够连接远程计算机的图形桌面并与之交互。 它可以通过网络传输屏幕更新以及键盘和鼠标事件。

当您的服务器需要图形桌面环境时,VNC 非常有用。

XFCE 是一个轻量级的桌面环境。 因为它对系统资源要求低,而且很多 VNC 用户都熟悉它,所以我们将在本教程中使用 XFCE。 但是,您也可以使用自己喜欢的桌面环境,例如 Gnome 或 KDE。

在本教程中,我们将设置一个 Debian 8 服务器,在其上安装 XFCE 桌面环境,并通过 VNC 连接它。 此外,我们将为 VNC 服务器创建一个启动脚本并通过 SSH 保护它。

先决条件

请完成以下先决条件。

  • 具有 root 访问权限的 Debian 8(或 8.1)Droplet。 512 MB 的 RAM 足以运行 VNC 和 XFCE,但您可能需要更大的 Droplet,具体取决于您打算如何使用图形界面
  • VNC 查看器(客户端)在您的计算机上连接到您的服务器。 在本教程中,我们将在 Windows 上使用 UltraVNC,但您可以使用其他 VNC 客户端。 你可以在这里下载UltraVNC 。 OS X 带有一个内置的 VNC 客户端,称为屏幕共享
  • SSH 客户端通过 SSH 建立安全连接。 我们将在 Windows 上使用 PuTTY。 您可以在此处 下载 PuTTY 。 在 OS X 上,只需使用内置的终端应用程序

第 1 步 — 安装 VNC 和 XFCE

在这一步中,我们将安装 VNC 服务器和 XFCE 桌面环境,以及附加软件和图标包。

更新服务器的软件包列表:

apt-get update

升级软件包本身:

apt-get -y upgrade

然后,我们将安装 tightvncserver 和 XFCE4 以及一些有用的附加组件和图标主题:

apt-get install xfce4 xfce4-goodies gnome-icon-theme tightvncserver

默认情况下没有安装浏览器。 如果您想通过 VNC 连接访问网络,您可以安装 iceweasel(这是 Mozilla Firefox for Debian 的更名版本):

apt-get install iceweasel

第 2 步 — 创建 VNC 用户

我们将为 VNC 连接创建一个单独的用户,以保持安全和整洁。 强烈建议使用 sudo,而不是直接为您的 VNC 服务器使用 root 用户。

您可以使用以下命令将名为 vnc 的用户添加到您的 Debian Droplet:

adduser vnc

给你的新用户一个密码。 您只需按 ENTER 即可跳过所有其他问题。

通过执行以下命令安装 sudo

apt-get install sudo

将新的 vnc 用户添加到 sudo 组,这将授予该用户执行 root 命令的权限。

gpasswd -a vnc sudo

让我们切换到 vnc 用户:

su - vnc

第 3 步 — 启动和停止 VNC 服务器

作为我们新创建的 vnc 用户,我们可以启动 VNC Server 并测试我们的连接。

启动 VNC 服务器:

vncserver

由于这是您第一次运行服务器,您将被要求设置客户端用于连接的密码。 请记住此密码以备后用! 您还可以设置仅查看密码,这将允许用户查看屏幕但不能与之交互。 密码应为 6-8 个字符

当服务器启动时,您将收到有关您的显示编号的通知。

输出

xauth:  file /home/vnc/.Xauthority does not exist

New 'X' desktop is vnc:1

Creating default startup script /home/vnc/.vnc/xstartup
Starting applications specified in /home/vnc/.vnc/xstartup
Log file is /home/vnc/.vnc/vnc:1.log

默认情况下,VNC 连接在从 5901 开始的端口上提供,用于第一个显示。 您的第二台显示器将在端口 5902 等上提供服务。

现在不要停止服务器,但我们包含了停止命令以供参考。

使用此命令在 Display 1(和端口 5901)上停止 VNC 服务器:

vncserver -kill :1

:1是你要杀的显示号。

当您想再次连接时,您可以手动启动 VNC Server。 我们将在后面的步骤中为 VNC Server 创建一个服务。


第 4 步 — 从 VNC 客户端连接

您现在可以连接到您的 VNC 服务器。 打开您的本地 VNC 客户端,具体取决于您的操作系统。

在 Windows 上,您可以在此处 使用 UltraVNC

在 OS X 上,您可以使用内置的屏幕共享应用程序或通过 Safari 访问此应用程序。 在 Safari 中,可以输入 vnc://your_server_ip:5901

对于您的 VNC 服务器地址,输入 your_server_ip:5901 并使用您刚刚为 VNC 连接设置的密码。

您可以在 XFCE 欢迎屏幕上选择 Use default config 按钮以轻松开始:

现在您可以使用远程桌面了!

第 5 步 — 创建 systemd 服务以自动启动 VNC 服务器

在本节中,我们将 VNC 服务器添加到 systemd。 使用服务可用于启动和停止 VNC 服务器,以及在重新启动 Droplet 时自动启动它。

首先,让我们杀死当前实例:

vncserver -kill :1

创建一个简单的脚本来轻松管理和配置我们的 VNC 服务器:

作为 vnc 或其他 sudo 用户,使用您喜欢的文本编辑器创建脚本文件。

sudo nano /usr/local/bin/myvncserver

准确添加这些内容。 该脚本为 VNC 提供了一些启动参数。

/usr/local/bin/myvncserver

#!/bin/bash
PATH="$PATH:/usr/bin/"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"

case "$1" in
start)
/usr/bin/vncserver ${OPTIONS}
;;

stop)
/usr/bin/vncserver -kill :${DISPLAY}
;;

restart)
$0 stop
$0 start
;;
esac
exit 0

您可以修改脚本以更改 VNC 连接的颜色深度或分辨率。

如果您使用的是 nano,您可以通过 CTRL+O 保存文件并通过 CTRL+X 退出。

使文件可执行:

sudo chmod +x /usr/local/bin/myvncserver

我们的脚本将帮助我们轻松修改设置和启动/停止 VNC Server。

如果您愿意,您可以手动调用脚本以使用所需的配置在端口 5901 上启动/停止 VNC 服务器。

sudo /usr/local/bin/myvncserver start
sudo /usr/local/bin/myvncserver stop
sudo /usr/local/bin/myvncserver restart

我们现在可以为我们的服务创建一个 单元文件。 单元文件用于描述服务并告诉计算机如何启动/停止或重新启动服务。

sudo nano /lib/systemd/system/myvncserver.service

将这些命令复制到服务文件。 我们的服务将简单地使用用户 vnc 调用上面的启动脚本。

/lib/systemd/system/myvncserver.service

[Unit]
Description=Manage VNC Server on this droplet

[Service]
Type=forking
ExecStart=/usr/local/bin/myvncserver start
ExecStop=/usr/local/bin/myvncserver stop
ExecReload=/usr/local/bin/myvncserver restart
User=vnc

[Install]
WantedBy=multi-user.target

现在我们可以重新加载 systemctl 并启用我们的服务:

sudo systemctl daemon-reload
sudo systemctl enable myvncserver.service

您现在已启用新服务。 使用 systemctl 命令使用这些命令来启动、停止或重新启动服务:

sudo systemctl start myvncserver.service
sudo systemctl stop myvncserver.service
sudo systemctl restart myvncserver.service

现在,您可以在 Droplet 上将 VNC 服务器作为服务运行。

第 6 步 — 使用 SSH 隧道保护您的 VNC 服务器

默认情况下,VNC 连接不使用加密,因此建议使用 SSH 隧道来保护您的会话。

为此,我们将只让我们的 VNC 服务器在 localhost 上服务。 您可以通过将 -localhost 添加到上一步中创建的启动脚本中的 OPTIONS 行来实现。

首先,停止VNC服务器:

sudo systemctl stop myvncserver.service

编辑您的配置脚本:

sudo nano /usr/local/bin/myvncserver

更改此行:

/usr/local/bin/myvncserver

. . .

OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"

. . .

将其替换为:

/usr/local/bin/myvncserver

. . .

OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"

. . .

重启 VNC 服务器:

sudo systemctl start myvncserver.service

现在您无法从远程计算机直接连接到您的 VNC 服务器。

视窗:

我们将使用 PuTTY 创建一个 SSH 隧道,然后通过我们创建的隧道进行连接。

打开腻子。

从左侧菜单中,转到 Connection->SSH->Tunnels 部分。

Add New Forwarded Port 部分,输入 5901 作为 Source portlocalhost:5901 作为 Destination

单击添加按钮。

您现在可以转到左侧菜单中的 Session 部分。

主机名(或 IP 地址) 字段中输入您的 Droplet 的 IP 地址。

点击【X10X】打开【X18X】按钮进行连接。 您还可以保存这些选项以供以后使用。

使用您的 vnc 用户登录。

进行 VNC 连接时,请保持 PuTTY 窗口打开。

现在您可以像往常一样使用您的 VNC 查看器了。 只需输入 localhost::5901 作为地址,并在后台保持 SSH 连接。

操作系统:

要建立 SSH 隧道,请在终端中使用以下行:

ssh vnc@your_server_ip -L 5901:localhost:5901

为 SSH 的 vnc 用户正常进行身份验证。 然后,在屏幕共享应用程序中,使用 localhost:5901

结论

现在您可以在 Debian 8 服务器上使用共享远程桌面。

使用它来配置您的服务器,或与他人共享您的屏幕。