在Ubuntu 16.04上安装和配置VNC服务器
管理服务器的传统方式是过度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服务器,则我们可以再做一次与上面相同的时间,只需启用而不是启动。