Tato příručka popisuje kroky nezbytné pro instalaci a konfiguraci serveru VNC na Ubuntu 18.04. Také vám ukážeme, jak se bezpečně připojit k serveru VNC prostřednictvím tunelu SSH.
Virtual Network Computing (VNC) je grafický systém pro sdílení pracovní plochy, který vám umožňuje používat klávesnici a myš ke vzdálenému ovládání jiného počítače. Je to open source alternativa k Microsoft remote desktopprotocol (RDP).
Předpoklady #
Než budete pokračovat ve výukovém programu, ujistěte se, že jste přihlášeni jako uživatel s právy sudo.
Instalace desktopového prostředí #
Většina serverů nemá nainstalované desktopové prostředí, takže začneme instalací odlehčeného desktopového prostředí.
V repozitářích Ubuntu je k dispozici několik desktopových prostředí (DE). Nainstalujeme Xfce. Je to rychlé, stabilní a lehké desktopové prostředí, díky kterému je ideální pro použití na vzdáleném serveru.
Chcete-li nainstalovat Xfce na váš server, zadejte následující příkazy:
sudo apt update
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
V závislosti na vašem systému může stahování a instalace balíčků Xfce nějakou dobu trvat.
Instalace serveru VNC #
V úložištích Ubuntu je také k dispozici několik různých serverů VNC, jako jsou TightVNC, TigerVNC a x11vnc. Každý server VNC má různé silné a slabé stránky, pokud jde o rychlost a zabezpečení.
Nainstalujeme TigerVNC. Je to aktivně udržovaný vysoce výkonný VNC server.
Chcete-li nainstalovat TigerVNC na server Ubuntu, zadejte následující příkaz:
sudo apt install tigervnc-standalone-server tigervnc-common
Nyní, když je server VNC nainstalován, je dalším krokem vytvoření počáteční konfigurace a nastavení hesla. Při spuštění vncserver
nepoužívejte sudo příkaz:
vncserver
Budete vyzváni k zadání a potvrzení hesla a zda jej chcete nastavit jako heslo pouze pro prohlížení. Pokud se rozhodnete nastavit heslo pouze pro zobrazení, uživatel nebude moci komunikovat s instancí VNC pomocí myši a klávesnice.
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth: file /home/linuxize/.Xauthority does not exist
New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/linuxize/.vnc/passwd :1 to connect to the VNC server.
Poprvé vncserver
je spuštěn, vytvoří a uloží soubor s hesly v ~/.vnc
. Tento adresář bude vytvořen, pokud není přítomen.
Všimněte si :1
za názvem hostitele ve výstupu výše. To označuje číslo portu zobrazení, na kterém běží server vnc. V našem případě server běží na TCP portu 5901
(5900+1). Pokud vytvoříte druhou instanci pomocí vncserver
poběží na dalším volném portu, tj. :2
, což znamená, že server běží na portu 5902
(5900+2).
Je důležité si pamatovat, že při práci se servery VNC :X
je zobrazovací port, který odkazuje na 5900+X
.
Než budete pokračovat dalším krokem, zastavte instanci VNC pomocí vncserver
příkaz s -kill
volba a číslo serveru jako argument. V tomto příkladu server běží na portu 5901 (:1
), takže to zastavíme pomocí:
vncserver -kill :1
Killing Xtigervnc process ID 7264... success!
Konfigurace serveru VNC #
Nyní, když jsou na serveru nainstalovány Xfce i TigerVNC, musíme nakonfigurovat TigerVNC tak, aby používal Xfce. Chcete-li tak učinit, vytvořte následující soubor:
~/.vnc/xstartupnano ~/.vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
Uložte a zavřete soubor. Výše uvedené příkazy budou automaticky provedeny při každém spuštění nebo restartu serveru TigerVNC.
~/.vnc/xstartup
soubor také musí mít oprávnění ke spuštění. Spusťte následující chmod
příkaz, abyste se ujistili, že jsou oprávnění správná:
chmod u+x ~/.vnc/xstartup
Pokud potřebujete předat serveru VNC další možnosti, vytvořte soubor s názvem config
a přidejte jednu možnost na řádek. Zde je příklad:
geometry=1920x1080
dpi=96
Vytvoření souboru jednotky Systemd #
Vytvořte soubor systemd unit, abyste mohli spouštět, zastavovat a restartovat službu VNC podle potřeby, stejně jako jakoukoli jinou službu systemd.
Otevřete textový editor a zkopírujte a vložte do něj následující konfiguraci. Nezapomeňte změnit uživatelské jméno na řádku 7 tak, aby odpovídalo vašemu uživatelskému jménu.
sudo nano /etc/systemd/system/[email protected]
/etc/systemd/system/[email protected][Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple
User=linuxize
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Uložte a zavřete soubor.
Informujte systemd, že jsme vytvořili nový soubor jednotky s:
sudo systemctl daemon-reload
Dalším krokem je povolení souboru jednotky pomocí následujícího příkazu:
sudo systemctl enable [email protected]
Číslo 1
za @
znak definuje zobrazovací port, na kterém poběží služba VNC. To znamená, že VNC server bude naslouchat na portu 5901
, jak jsme diskutovali v předchozí části.
Spusťte službu VNC spuštěním:
sudo systemctl start [email protected]
Ověřte, zda je služba úspěšně spuštěna pomocí:
sudo systemctl status [email protected]
● [email protected] - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/[email protected]; indirect; vendor preset: enabled)
Active: active (running) since Thu 2018-08-16 19:05:54 UTC; 4s ago
Process: 9893 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 9900 (vncserver)
Tasks: 0 (limit: 507)
CGroup: /system.slice/system-vncserver.slice/[email protected]
‣ 9900 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg
Připojování k serveru VNC #
VNC není šifrovaný protokol a může být předmětem sniffování paketů. Doporučený přístup je vytvořit tunel SSH, který bude bezpečně předávat provoz z vašeho místního počítače na portu 5901 na server na stejném portu.
Nastavit tunelování SSH v systémech Linux a macOS #
Pokud na svém počítači používáte Linux, macOS nebo jakýkoli jiný operační systém založený na Unixu, můžete snadno vytvořit tunel SSH pomocí následujícího příkazu:
ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
Budete vyzváni k zadání uživatelského hesla.
Nezapomeňte nahradit username
a server_ip_address
s vaším uživatelským jménem a IP adresou vašeho serveru.
Nastavit tunelování SSH v systému Windows #
Pokud používáte Windows, můžete nastavit SSH Tunneling pomocí klienta PuTTY SSH.
Otevřete Putty a zadejte IP adresu vašeho serveru do Host name or IP address
pole.
V části Connection
nabídka, pole, rozbalte SSH
a vyberte Tunnels
. Zadejte port serveru VNC (5901
) v Source Port
a zadejte server_ip_address:5901
v Destination
a klikněte na Add
tlačítko, jak je znázorněno na obrázku níže:
Vraťte se do Session
stránku pro uložení nastavení, abyste je nemuseli pokaždé zadávat. Na vzdálený server vyberte uloženou relaci a klikněte na Open
tlačítko.
Připojování pomocí Vncviewer #
Nyní, když je vytvořen SSH tunel, je čas otevřít váš Vncviewer a připojit se k VNC serveru na localhost:5901
.
Pro Google Chrome můžete použít jakýkoli prohlížeč VNC, jako je TigerVNC, TightVNC, RealVNC, UltraVNC, Vinagre a VNC Viewer.
Budeme používat TigerVNC. Otevřete prohlížeč, zadejte localhost:5901
a klikněte na Connect
tlačítko.
Po výzvě zadejte své uživatelské heslo a měli byste vidět výchozí plochu Xfce. Bude to vypadat nějak takto:
Můžete začít komunikovat se vzdálenou plochou XFCE z místního počítače pomocí klávesnice a myši.