V tomto tutoriálu vás provedeme kroky pro instalaci a konfiguraci serveru VNC na systému CentOS 7. 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í plochy, který vám umožňuje používat klávesnici a myš ke vzdálenému ovládání jiného počítače.
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. Budeme předpokládat, že jste přihlášeni jako uživatel s názvem linuxize
.
Instalace Xfce Desktop Environment #
Instalace serveru CentOS často nepřicházejí s nainstalovaným desktopovým prostředím, takže začneme instalací odlehčeného desktopového prostředí.
Nainstalujeme Xfce. Je rychlý, stabilní a má málo systémových prostředků, takže je ideální pro použití na vzdálených serverech.
Balíčky Xfce jsou dostupné v úložišti EPEL. Pokud není úložiště na vašem serveru povoleno, můžete jej povolit zadáním:
sudo yum install epel-release
Jakmile je úložiště přidáno, nainstalujte Xfce na svůj CentOS pomocí:
sudo yum groupinstall xfce
V závislosti na vašem systému může stažení a instalace balíčků a závislostí Xfce nějakou dobu trvat.
Instalace serveru VNC #
Jako náš VNC server budeme používat TigerVNC. TigerVNC je aktivně udržovaný vysoce výkonný open-source VNC server.
Chcete-li nainstalovat TigerVNC na server CentOS, zadejte následující příkaz:
sudo yum install tigervnc-server
Nyní, když je VNC server nainstalován, je dalším krokem spuštění vncserver
příkaz, který vytvoří počáteční konfiguraci a nastaví heslo. Při spouštění následujícího příkazu nepoužívejte sudo:
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
Poprvé vncserver
je spuštěn, vytvoří a uloží soubor s hesly do ~/.vnc
adresář, který bude vytvořen, pokud nebude 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, nejprve zastavte instanci VNC pomocí vncserver
příkaz s -kill
volba a číslo serveru jako argument. V tomto případě server běží na portu 5901 (:1
), takže to zastavíme pomocí:
vncserver -kill :1
Killing Xvnc process ID 2432
Konfigurace serveru VNC #
Nyní, když jsou na serveru nainstalovány Xfce i TigerVNC, je dalším krokem konfigurace TigerVNC pro použití Xfce. Chcete-li tak učinit, otevřete následující soubor:
nano ~/.vnc/xstartup
A změňte poslední řádek z exec /etc/X11/xinit/xinitrc
do exec startxfce4
:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
Uložte a zavřete soubor. Výše uvedený skript bude automaticky spuštěn při každém spuštění nebo restartu serveru TigerVNC.
Pokud potřebujete serveru VNC předat další možnosti, otevřete ~/.vnc/config
soubor a přidejte jednu možnost na řádek. Nejběžnější možnosti jsou uvedeny v souboru. Odkomentujte a upravte podle svých představ.
Zde je příklad:
~/.vnc/config# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared
dpi=96
Vytvoření souboru jednotky Systemd #
Vytvoříme soubor systemd unit, který nám umožní snadno spustit, zastavit a restartovat službu VNC podle potřeby, stejně jako jakoukoli jinou službu systemd.
Zkopírujte soubor jednotky vncserver s cp
příkaz:
sudo cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service
Otevřete soubor pomocí textového editoru, upravte žlutě zvýrazněné řádky a nahraďte „linuxize“ svým skutečným uživatelským jménem:
sudo nano /etc/systemd/system/vncserver@\:1.service
/etc/systemd/system/vncserver@:1.service[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=linuxize
Group=linuxize
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %I
PIDFile=/home/linuxize/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[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 vncserver@:1.service
Číslo 1
za @
znak definuje zobrazovací port, na kterém poběží služba VNC. V tomto příkladu je to výchozí 1
a 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 vncserver@:1.service
Ověřte, zda je služba úspěšně spuštěna pomocí:
sudo systemctl status vncserver@:1.service
● vncserver@:1.service - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-04-06 19:27:47 UTC; 16s ago
Process: 909 ExecStart=/usr/bin/vncserver %I (code=exited, status=0/SUCCESS)
Process: 891 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 923 (Xvnc)
...
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 pomocí následujícího ssh
příkaz:
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
v nabídce 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í, abyste je nemuseli pokaždé zadávat.
Chcete-li se přihlásit ke vzdálenému serveru, vyberte uloženou relaci a klikněte na Open
tlačítko
Připojování pomocí Vncviewer #
Nyní, když jste nastavili tunelování SSH, je čas otevřít váš Vncviewer a připojit se k serveru VNC 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.
V tomto příkladu budeme používat TigerVNC. Otevřete prohlížeč VNC a zadejte localhost:5901
a klikněte na Connect
tlačítko.
Po zobrazení výzvy zadejte své heslo a měla by se zobrazit výchozí plocha Xfce. Mělo by to vypadat nějak takto:
Nyní můžete začít komunikovat se vzdálenou plochou XFCE z místního počítače pomocí klávesnice a myši.