如何在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 port 和 localhost: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 服务器上使用共享远程桌面。
使用它来配置您的服务器,或与他人共享您的屏幕。