在Ubuntu 16.04上安装和配置VNC服务器

时间:2020-03-05 15:29:37  来源:igfitidea点击:

管理服务器的传统方式是过度SSH和命令行。
但有时我们需要在服务器上使用GUI运行一些应用程序,并且由于我们通常不介入服务器旁边,即使我们执行此处,服务器可能没有监视器和键盘,则需要某种远程桌面。

VNC是一个很好的解决方案,它被广泛使用,并且很容易设置。
Ubuntu在存储库中具有RICITEVNC,并且在本教程中我们将在Ubuntu Server 16.04上设置一个多用户RickVNC服务器。

对于GUI,我们将使用XFCE,这是一个更轻质的替代品到GNOME和UNITY。

安装VNC服务器(紧密VNC)和桌面(XFCE)

首先,我们首先通过安装RucientVNC服务器和XFCE桌面环境开始。

sudo apt install gnome-core xfce4 firefox xfce4-goodies tightvncserver

然后我们需要将VNC Server配置为密码作为用户的"miki"登录

vncserver

它还将提示我们仅查看密码,如果要将某人连接到VNC会话,则需要将其连接到VNC会话,而无需控制游标和键盘。
此密码必须与密码不同。
如果我们不打算有观众,我们可以选择不仅输入密码。
完成此过程后,VNC实例将在端口5901上启动,VNCServer将此端口数为:1.
如果我们开始多个VNC实例,则会有多个显示端口,并且每个实例都将以1,至:2和5902递增1,为:2和5902递增。
要继续配置,我们实际上需要杀死VNC服务器的所有实例。
我们通过以下命令执行此操作:

vncserver -kill :1

完成此操作后,可以编辑VNC服务器的配置文件,以选择连接到VNC服务器时将启动哪些桌面环境。
我正在谈论的文件被称为xstartup,它位于~/dir中的隐藏.vnc目录中。
允许首先备份此文件

mv ~/.vnc/xstartup ~/.vnc/xstartup.backup

然后从Clean Slate创建新文件

nano ~/.vnc/xstartup

在此空文件中,粘贴这几行:

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

将可伸展位添加到TIHS文件

sudo chmod +x ~/.vnc/xstartup

接下来我们可以再次启动VNC服务器

vncserver

连接到VNC服务器

接下来,我们需要连接到VNC服务器以查看我们的设置是否正常工作。
我们可以使用任何VNC客户端,例如Vinagre或者远程桌面查看器,就像它也被称为。
首先安装并启动它

sudo apt install vinagre

输入服务器的名称,端口5901,然后单击"连接"。
我们应该提示我们输入密码,然后我们应该进入XFCE

我们可以从无限数量的计算机连接到此会话,但是yo都将控制一个鼠标光标并具有相同的会话。
如果某些用户只键入视图只有密码(提供了我们创建的那个),它们将无法控制光标,但它们仍将在单个会话中,并观察同一屏幕。

多个用户

有多个VNC会话不会相互干扰。
这是通过抵消任意数量的用户,每个用户都有自己的显示端口和他自己的VNC服务器实例。
反过来他将运行自己的桌面环境实例,或者这可能完全分开de。
通过添加新用户来首先启动

sudo adduser newuser

接下来,我们以该用户身份登录

su newuser

并让我们为新用户进行密码

vncserver

密码以外,这也会在端口5902上侦听新的进程。
我们需要杀死此过程以便能够编辑配置文件。

vncserver -kill :2

我们需要实际从早些时候重复进程。
首先备份xstartup文件

mv ~/.vnc/xstartup ~/.vnc/xstartup.backup

然后从头开始创建新的

nano ~/.vnc/xstartup

过去的三行吼叫

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

并使其可执行文件:

sudo chmod +x ~/.vnc/xstartup

现在运行vncserver以Spwawn这个过程

vncserver :2

我们现在可以在端口5902中连接并具有单独的会话。

如何设置SSH隧道

到目前为止,我们设法在我们的案例5901和5902中设法直接在显示端口上连接。
但是,如果这些端口被防火墙关闭,则何时何于某种原因来打开它们是不切实际的。
在这种情况下有解决方案,我们可以使用SSH隧道。
端口22或者用于服务器上的SSH访问的任何其他端口可用于欺骗VNC查看器VNC Server在端口5901或者5902上的LocalHost上运行。
使用此命令我们正在建立SSH隧道:

ssh -L 5902:127.0.0.1:5902 [email protected]

务必将突出显示的部分更改为IP地址和用户名。

在此之后,我们可以启动Vinagre或者Remmina并输入LocalHot:5902作为地址。
它将认为远程桌面在localhost上,并且可以将流量路由到SSH端口到服务器,只要SSH连接处于活动状态即可。

配置systemd单元

当我们手动设置用户和SSH时,这一切都很好,但我们必须在每个服务器重新启动时重做它。
因此,要避免这种情况,请制作系统文件。
这是旧学校启动脚本的新花哨名称。
我们实际上需要为两个用户制作两个,让我们首先创建一个

sudo nano /etc/systemd/system/[email protected]

你有这个配置

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=miki
PAMName=login
PIDFile=/home/miki/.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

然后你再做一个:

sudo nano /etc/systemd/system/[email protected]

并粘贴相同的东西,只是在两种情况下更改我们自己用户的用户名。
现在我们需要杀死旧进程,如果它们仍在运行并重新加载单位文件

vncserver -kill :2
vncserver -kill :1
sudo systemctl daemon-reload

并开始使用单位文件

sudo systemctl start vncserver@1
sudo systemctl start vncserver@2

如果我们想要在每次启动时使用VNC服务器,则我们可以再做一次与上面相同的时间,只需启用而不是启动。