Virtual Network Computing (VNC) je grafický systém pro sdílení pracovní plochy, který vám umožňuje používat klávesnici a myš k dálkovému ovládání jiného počítače. Je to open source alternativa k Microsoft remote desktopprotocol (RDP).
Tento článek vysvětluje, jak nainstalovat a nakonfigurovat server VNC na Ubuntu 20.04. Ukážeme vám také, jak se bezpečně připojit k serveru VNC prostřednictvím tunelu SSH.
Instalace desktopového prostředí #
Servery Ubuntu jsou spravovány z příkazového řádku a ve výchozím nastavení nemají nainstalované desktopové prostředí. Pokud používáte desktopovou verzi Ubuntu, tento krok přeskočte.
V repozitářích Ubuntu jsou k dispozici různá desktopová prostředí. Jednou z možností je nainstalovat Gnome, což je výchozí desktopové prostředí v Ubuntu 20.04. Další možností je nainstalovat Xfce. Jedná se o rychlé, stabilní a lehké desktopové prostředí, díky kterému je ideální pro použití na vzdáleném serveru.
V této příručce nainstalujeme Xfce. Zadejte následující příkazy jako uživatel s právy sudo:
sudo apt update
sudo apt install xfce4 xfce4-goodies
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 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. Jedná se o aktivně udržovaný vysoce výkonný VNC server. Pro instalaci balíčku zadejte následující příkaz:
sudo apt install tigervnc-standalone-server
Konfigurace přístupu VNC #
Jakmile je server VNC nainstalován, dalším krokem je vytvoření počáteční uživatelské konfigurace a nastavení hesla.
Nastavte uživatelské heslo pomocí vncpasswd
příkaz. Při spouštění níže uvedeného příkazu nepoužívejte sudo:
vncpasswd
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.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
Soubor s hesly je uložen v ~/.vnc
adresář, který se vytvoří, pokud není přítomen.
Dále musíme nakonfigurovat TigerVNC pro použití 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 se automaticky provádějí 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í. Použijte chmod
příkaz pro nastavení oprávnění k souboru:
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
Nyní můžete spustit VNC server pomocí vncserver
příkaz:
vncserver
New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com
Starting applications specified in /home/linuxize/.vnc/xstartup
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.
Všimněte si :1
za názvem hostitele ve výstupu výše. Toto označuje číslo portu zobrazení, na kterém běží server vnc. V tomto příkladu server běží na portu TCP 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
.
Seznam všech aktuálně spuštěných relací VNC získáte zadáním:
vncserver -list
TigerVNC server sessions:
X DISPLAY # RFB PORT # PROCESS ID
:1 5901 5710
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 5710... success!
Vytvoření souboru jednotky Systemd #
Namísto ručního spouštění relace VNC vytvořte soubor systemd unit, abyste mohli spouštět, zastavovat a restartovat službu VNC podle potřeby.
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 je vytvořen nový soubor jednotky:
sudo systemctl daemon-reload
Povolte spuštění služby při spuštění:
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]; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-03-26 20:00:59 UTC; 3s ago
...
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 a bezpečně přesměrovat 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 vagrant 192.168.33.10
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
pro uložení nastavení, takže je nemusíte 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.