如何在Ubuntu 18.04上安装和配置VNC
原文地址请点击
如何在Ubuntu 18.04上安装和配置VNC
介绍
虚拟网络计算(VNC)是一种连接系统,使您可以使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。对于尚不熟悉命令行的用户,它使在远程服务器上管理文件,软件和设置更加容易。
在本指南中,您将在Ubuntu 18.04服务器上设置VNC服务器,并通过SSH隧道安全地连接到该服务器。您将使用TightVNC,这是一种快速,轻便的远程控制程序包。此选择将确保即使在较慢的Internet连接上,我们的VNC连接也将保持平稳。
先决条件
要完成本教程,您需要:
- 按照Ubuntu 18.04初始服务器设置指南设置一台Ubuntu 18.04服务器,包括sudo非root用户和防火墙。
- 安装了VNC客户端的本地计算机,该计算机支持通过SSH隧道的VNC连接。
安装桌面环境和VNC服务器
默认情况下,Ubuntu 18.04服务器未安装图形桌面环境或VNC服务器,因此我们将从安装它们开始。具体来说,我们将安装适用于最新Xfce桌面环境的软件包以及官方Ubuntu存储库中提供的TightVNC软件包。
在服务器上,更新软件包列表:
sudo apt update
现在,在您的服务器上安装Xfce桌面环境:
sudo apt install xfce4 xfce4-goodies
安装完成后,安装TightVNC服务器:
sudo apt install tightvncserver
要在安装后完成VNC服务器的初始配置,请使用以下vncserver
命令来设置安全密码并创建初始配置文件:
vncserver
系统将提示您输入并验证密码以远程访问您的计算机:
OutputYou will require a password to access your desktops.
Password:
Verify:
密码长度必须介于六到八个字符之间。超过8个字符的密码将被自动截断。
验证密码后,您可以选择创建仅查看密码。使用仅查看密码登录的用户将无法使用其鼠标或键盘来控制VNC实例。如果您想向使用VNC服务器的其他人演示某些内容,这是一个有用的选项,但这不是必需的。
然后,该过程为服务器创建必要的默认配置文件和连接信息:
Would you like to enter a view-only password (y/n)? n
xauth: file /home/sammy/.Xauthority does not exist
New 'X' desktop is your_hostname:1
Creating default startup script /home/sammy/.vnc/xstartup
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log
现在,让我们配置VNC服务器。
配置VNC服务器
VNC服务器启动时需要知道要执行哪些命令。具体来说,VNC需要知道它应该连接到哪个图形桌面。
这些命令位于主目录下xstartup
的.vnc
文件夹中的配置文件中。启动脚本是vncserver
在上一步中运行时创建的,但是我们将创建自己的脚本来启动Xfce桌面。
首次设置VNC时,它将在port上启动默认服务器实例5901
。此端口称为显示端口,VNC将该端口称为:1
。VNC可以在其他显示器端口,如启动多个实例:2
,:3
等。
因为我们将要更改VNC服务器的配置方式,所以首先5901
使用以下命令停止在端口上运行的VNC服务器实例:
vncserver -kill :1
输出将看起来像这样,尽管您将看到一个不同的PID:
Killing Xtightvnc process ID 17648
在修改xstartup
文件之前,请备份原始文件:
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
现在创建一个新xstartup
文件,并在文本编辑器中将其打开:
nano ~/.vnc/xstartup
每当启动或重新启动VNC服务器时,该文件中的命令就会自动执行。如果尚未启动桌面环境,我们需要VNC来启动它。将以下命令添加到文件中:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
文件中的第一个命令xrdb $HOME/.Xresources
告诉VNC的GUI框架读取服务器用户的.Xresources
文件。.Xresources
用户可以在其中更改图形桌面的某些设置,例如终端颜色,光标主题和字体渲染。第二个命令告诉服务器启动Xfce,在这里您将找到轻松管理服务器所需的所有图形软件。
为了确保VNC服务器能够正确使用此新启动文件,我们需要使其成为可执行文件。
sudo chmod +x ~/.vnc/xstartup
现在,重新启动VNC服务器。
vncserver
您将看到类似于以下的输出:
New 'X' desktop is your_hostname:1
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log
完成配置后,让我们从本地计算机连接到服务器。
安全地连接VNC桌面
连接时,VNC本身不使用安全协议。我们将使用SSH隧道安全地连接到我们的服务器,然后告诉我们的VNC客户端使用该隧道,而不是直接建立连接。
在本地计算机上创建SSH连接,以安全地转发到localhost
VNC连接。您可以使用以下命令通过Linux或macOS上的终端执行此操作:
ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip
该-L
开关指定的端口绑定。在这种情况下,我们将5901
远程连接的端口绑定到5901
本地计算机上的端口。该-C
开关启用压缩,而该-N
开关告诉ssh
我们不想执行远程命令。该-l
开关指定远程登录名。
记得替换sammy
,并your_server_ip
与您的服务器的sudo
非root用户名和IP地址。
如果使用的是图形SSH客户端(如PuTTY),请your_server_ip
用作连接IP,并localhost:5901
在程序的SSH隧道设置中将其设置为新的转发端口。
隧道运行后,使用VNC客户端连接localhost:5901
。系统将提示您使用在步骤1中设置的密码进行身份验证。
接下来,我们将VNC服务器设置为服务。
将VNC作为系统服务运行
接下来,我们将VNC服务器设置为系统服务,以便我们可以像其他任何服务一样根据需要启动,停止和重新启动它。这还将确保在服务器重新引导时VNC启动。
首先,/etc/systemd/system/vncserver@.service
使用您喜欢的文本编辑器创建一个新的单元文件:
sudo nano /etc/systemd/system/vncserver@.service
@
名称末尾的符号将使我们传递可在服务配置中使用的参数。我们将使用它来指定我们在管理服务时要使用的VNC显示端口。
将以下行添加到文件中。确保在PIDFILE的值中更改User,Group,WorkingDirectory和用户名的值以匹配您的用户名:
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=orangepi
Group=orangepi3
WorkingDirectory=/home/orangepi
PIDFile=/home/orangepi/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
ExecStartPre
如果该命令已在运行,它将停止VNC。该ExecStart
命令将启动VNC并将颜色深度设置为24位颜色,分辨率为1280x800。您也可以修改这些启动选项,以满足您的需求。
保存并关闭文件。
接下来,使系统知道新的单位文件。
sudo systemctl daemon-reload
启用单位文件。
sudo systemctl enable vncserver@1.service
在1
以下的@
符号表示,其显示编号的服务应该出现过,在这种情况下,默认:1
为在步骤2中进行了讨论..
如果VNC服务器的当前实例仍在运行,请停止它。
vncserver -kill :1
然后像启动其他任何systemd服务一样启动它。
sudo systemctl start vncserver@1
您可以验证它是否使用以下命令启动:
sudo systemctl status vncserver@1
如果正确启动,则输出应如下所示:
Output● vncserver@1.service - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/vncserver@.service; indirect; vendor preset: enabled)
Active: active (running) since Mon 2018-07-09 18:13:53 UTC; 2min 14s ago
Process: 22322 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
Process: 22316 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
Main PID: 22330 (Xtightvnc)
...
重新启动计算机后,您的VNC服务器现在将可用。
再次启动SSH隧道:
ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip
然后使用VNC客户端软件建立新连接localhost:5901
以连接到计算机。
结论
现在,您已在Ubuntu 18.04服务器上启动并运行了安全的VNC服务器。现在,您将可以使用易于使用且熟悉的图形界面来管理文件,软件和设置,并且可以远程运行Web浏览器等图形软件。