- Úvod
- Cíle
- Předpoklady
- Krok 1 – Vytvoření dvou uživatelských účtů
- Krok 2 – Instalace prostředí GNOME
- Řešení problémů – Server se zasekl ve fázi spouštění
- Krok 3 – Instalace serveru TigerVNC
- Krok 4 – Konfigurace služby VNC pro dva klienty
- Krok 5 – Konfigurace brány firewall
- Krok 6 – Nastavení hesel VNC
- Krok 7 – Připojení ke vzdáleným plochám pomocí klienta VNC
- Řešení problémů – pád služby VNC
- Obecné řešení problémů
- Krok 8 – Zabezpečení relací VNC pomocí tunelování SSH
- Závěr
Úvod
VNC neboli Virtual Network Computing je protokol nezávislý na platformě, který umožňuje uživatelům připojit se ke vzdálenému počítačovému systému a používat jeho prostředky pomocí grafického uživatelského rozhraní (GUI).
Je to jako vzdálené ovládání aplikace: stisky kláves nebo kliknutí myší klientského počítače jsou přenášeny přes síť do vzdáleného počítače. VNC také umožňuje sdílení schránky mezi oběma počítači. Pokud pocházíte ze serverového prostředí systému Microsoft Windows, VNC se podobá službě Vzdálená plocha s tím rozdílem, že je k dispozici také pro OS X, Linux a další operační systémy.
Stejně jako vše ostatní ve světě sítí je i VNC založeno na modelu klient-server:
Cíle
V tomto návodu se naučíme, jak nainstalovat a nakonfigurovat server VNC v systému CentOS 7. Nainstalujeme server TigerVNC, který je volně dostupný z repozitáře TigerVNC GitHub.
Abychom si ukázali, jak VNC funguje, nainstalujeme na server CentOS také prostředí GNOME. Vytvoříme dva uživatelské účty a nakonfigurujeme pro ně přístup VNC. Poté otestujeme jejich připojení ke vzdálené ploše a nakonec se naučíme, jak zabezpečit vzdálené připojení pomocí tunelu SSH.
Předpoklady
Příkazy, balíčky a soubory uvedené v tomto tutoriálu byly testovány na minimální instalaci systému CentOS 7. Doporučujeme následující:
- Distro: Droplet s 2 GB RAM
- Pro postup podle tohoto návodu byste měli používat uživatele sudo. Chcete-li pochopit, jak fungují práva sudo, můžete se podívat na tento výukový program DigitalOcean
Upozornění: Na produkčním linuxovém serveru byste neměli spouštět žádné příkazy, dotazy ani konfigurace z tohoto návodu. Mohlo by to vést k bezpečnostním problémům a výpadkům.
Krok 1 – Vytvoření dvou uživatelských účtů
Nejprve vytvoříme dva uživatelské účty. Tyto účty se budou vzdáleně připojovat k našemu serveru CentOS 7 z klientů VNC.
- joevnc
- janevnc
Spustíme následující příkaz pro přidání uživatelského účtu joevnc:
sudo useradd -c "User Joe Configured for VNC Access" joevnc
Poté spustíme příkaz passwd pro změnu hesla joevnc:
sudo passwd joevnc
Výstup nás požádá o nové heslo. Po jeho zadání bude účet připraven k přihlášení:
Changing password for user joevnc.New password:Retype new password:passwd: all authentication tokens updated successfully.
Dále vytvoříme účet pro janevnc:
sudo useradd -c "User Jane Configured for VNC Access" janevnc
Nastavíme heslo pro janevnc:
sudo passwd janevnc
Krok 2 – Instalace prostředí GNOME
Nyní nainstalujeme prostředí GNOME. GNOME je výsledkem spolupráce: jedná se o soubor svobodného a otevřeného softwaru, který tvoří velmi populární desktopové prostředí. Existují i jiná desktopová prostředí, například KDE, ale GNOME je populárnější. Naši uživatelé VNC budou používat prostředí GNOME k interakci se serverem z jeho pracovní plochy:
sudo yum groupinstall -y "GNOME Desktop"
V závislosti na rychlosti vaší sítě to může trvat několik minut.
Po instalaci skupiny balíčků restartujte server:
sudo reboot
Řešení problémů – Server se zasekl ve fázi spouštění
V závislosti na tom, jak byl váš server nastaven, může po spuštění počítače zůstat ve fázi spouštění a zobrazit se na něm následující hlášení:
Initial setup of CentOS Linux 7 (core)1) License information (Licence not accepted)Please make your choice from above :
Chcete-li se přes to dostat, stiskněte 1 (přečtení licence), pak 2 (přijetí licence) a pak C (pokračování). Možná budete muset stisknout C dvakrát nebo vícekrát. Na obrázku níže je to vidět:
Pokud se tato chyba nezobrazí a proces spouštění je bezproblémový, tím lépe – můžete přejít k dalšímu kroku.
Krok 3 – Instalace serveru TigerVNC
TigerVNC je software, který nám umožní navázat připojení ke vzdálené ploše.
Instalace serveru Tiger VNC:
sudo yum install -y tigervnc-server
Měl by se zobrazit následující výstup:
Loaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile. . .Running transaction Installing : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64 1/1 Verifying : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64 1/1Installed: tigervnc-server.x86_64 0:1.2.80-0.30.20130314svn5065.el7Complete!
Nyní máme nainstalovaný server VNC a pracovní prostředí GNOME. Vytvořili jsme také dva uživatelské účty pro připojení prostřednictvím VNC.
Krok 4 – Konfigurace služby VNC pro dva klienty
Server VNC se při první instalaci nespustí automaticky. Chcete-li to zkontrolovat, spusťte následující příkaz:
sudo systemctl status vncserver@:.service
Výstup bude vypadat takto:
vncserver@:.service - Remote desktop service (VNC) Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled) Active: inactive (dead)
Můžete také spustit tento příkaz:
sudo systemctl is-enabled [email protected]
Ten by měl zobrazit následující výstup:
disabled
Proč je tedy zakázán? Protože každý uživatel spustí samostatnou instanci démona služby VNC. Jinými slovy, VNC neběží jako jeden proces, který obslouží každý požadavek uživatele. Každý uživatel připojující se prostřednictvím VNC bude muset spustit novou instanci démona (nebo to může správce systému automatizovat).
Systém CentOS 7 používá démona systemd k iniciaci dalších služeb. Každá služba, která nativně běží pod systemd, má soubor jednotky služby, který je instalátorem yum umístěn do adresáře /lib/systemd/system
. Procesy, které se spouštějí automaticky při startu systému, mají odkaz na tento soubor jednotky služby umístěný v adresáři /etc/systemd/system/
.
V našem případě byl obecný soubor jednotky služby vytvořen v adresáři /lib/systemd/system/
, ale v adresáři /etc/systemd/system/
nebyl vytvořen žádný odkaz. Chcete-li to otestovat, spusťte následující příkazy:
sudo ls -l /lib/systemd/system/vnc*
Měli byste vidět:
-rw-r--r--. 1 root root 1744 Jun 10 16:15 /lib/systemd/system/[email protected]
Poté zkontrolujte pod /etc/systemd/system/
:
sudo ls -l /etc/systemd/system/*.wants/vnc*
Tento neexistuje:
ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory
Prvním krokem je tedy spuštění dvou nových instancí VNC serveru pro naše dva uživatele. K tomu budeme muset vytvořit dvě kopie obecného souboru jednotky služby VNC pod /etc/system/system
. V úryvku kódu níže vytváříte dvě kopie se dvěma různými názvy:
sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:4.servicesudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:5.service
Proč jsme tedy do názvů kopírovaných souborů přidali dvě čísla (spolu s dvojtečkou)?
Znovu se vracíme ke konceptu jednotlivých služeb VNC. VNC samo o sobě běží na portu 5900. Protože každý uživatel bude provozovat svůj vlastní server VNC, bude se muset každý uživatel připojit přes samostatný port. Přidání čísla v názvu souboru říká službě VNC, aby danou službu spustila jako podport 5900
. V našem případě tedy služba VNC joevnc poběží na portu 5904 (5900 + 4) a služba janevnc poběží na portu 5905 (5900 + 5).
Dále upravte soubor jednotky služby pro každého klienta. Otevřete soubor /etc/systemd/system/vncserver@:4.service
pomocí editoru vi:
sudo vi /etc/systemd/system/vncserver@:4.service
Pohled do části „Rychlý návod“ nám říká, že první krok jsme již provedli. Nyní musíme projít zbývající kroky. Komentáře nám také říkají, že VNC je nedůvěryhodné připojení. O tom si povíme později.
Prozatím upravte část souboru a nahraďte případy
<USER>
za joevnc
. Přidejte také klauzuli -geometry 1280x1024
na konec parametru ExecStart
. Tím pouze sdělíte programu VNC, v jaké velikosti obrazovky má začít. Celkem upravíte dva řádky. Takto by měl vypadat upravený soubor (všimněte si, že není zobrazen celý):
# The vncserver service unit file## Quick HowTo:# 1. Copy this file to /etc/systemd/system/vncserver@:<display>.service# 2. Edit <USER> and vncserver parameters appropriately# ("runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2")# 3. Run `systemctl daemon-reload`# 4. Run `systemctl enable vncserver@:<display>.service`#. . .Description=Remote desktop service (VNC)After=syslog.target network.targetType=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'ExecStart=/sbin/runuser -l joevnc -c "/usr/bin/vncserver %i -geometry 1280x1024" PIDFile=/home/joevnc/.vnc/%H%i.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'WantedBy=multi-user.target
Uložení souboru a ukončení vi.
Podobně otevřete ve vi soubor /etc/systemd/system/vncserver@:5.service
a proveďte změny pro uživatele janevnc:
sudo vi /etc/systemd/system/vncserver@:5.service
Tady je jen část s vyznačenými změnami:
Type=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'ExecStart=/sbin/runuser -l janevnc -c "/usr/bin/vncserver %i -geometry 1280x1024"PIDFile=/home/janevnc/.vnc/%H%i.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
Dále spusťte následující příkazy pro znovunačtení démona systemd a také pro zajištění spuštění VNC pro dva uživatele při startu systému.
sudo systemctl daemon-reload
Povolte první instanci serveru:
sudo systemctl enable vncserver@:4.service
Výstup:
ln -s '/etc/systemd/system/vncserver@:4.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:4.service'
Povolte druhou instanci serveru:
sudo systemctl enable vncserver@:5.service
Výstup:
ln -s '/etc/systemd/system/vncserver@:5.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:5.service'
Nyní jste nakonfigurovali dvě instance serveru VNC.
Krok 5 – Konfigurace brány firewall
Dále budeme muset nakonfigurovat bránu firewall tak, aby povolovala provoz VNC pouze přes porty 5904 a 5905. Systém CentOS 7 používá dynamickou bránu firewall prostřednictvím démona firewalld; aby se změny projevily, nemusí se služba restartovat.
Služba firewalld by se měla spustit automaticky při startu systému, ale vždy je dobré ji zkontrolovat:
sudo firewall-cmd --state
Mělo by se zobrazit:
running
Pokud je z nějakého důvodu stav „neběží“, proveďte následující příkaz, abyste se ujistili, že běží:
sudo systemctl start firewalld
Nyní přidejte pravidla pro porty 5904 a 5905:
sudo firewall-cmd --permanent --zone=public --add-port=5904-5905/tcp
Výstup:
success
Zapněte firewall:
sudo firewall-cmd --reload
Výstup:
success
Krok 6 – Nastavení hesel VNC
Jsme o krok dál, než uvidíme VNC v akci. V tomto kroku budou muset uživatelé nastavit svá hesla VNC. Nejedná se o hesla uživatelů systému Linux, ale o hesla pro přihlášení k relacím VNC.
Otevřete další terminálové připojení k serveru CentOS 7 a tentokrát se přihlaste jako joevnc.
ssh joevnc@your_server_ip
Provedete následující příkaz:
vncserver
Jak ukazuje následující výstup, server požádá joevnc o nastavení hesla VNC. Po zadání hesla program také zobrazí řadu souborů vytvářených v domovském adresáři uživatele:
You will require a password to access your desktops.Password:Verify:xauth: file /home/joevnc/.Xauthority does not existNew 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1Creating default startup script /home/joevnc/.vnc/xstartupStarting applications specified in /home/joevnc/.vnc/xstartupLog file is /home/joevnc/.vnc/localhost.localdomain:1.log
Podívejme se na řádek New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1
. localhost.localdomain byl v našem příkladu název serveru; ve vašem případě může být jiný. Všimněte si čísla za názvem serveru: (1, oddělené dvojtečkou). Není to číslo v souboru jednotky služby joevnc (které bylo 4). To proto, že se jedná o číslo displeje, na kterém poběží relace joevnc v tomto serveru, nikoli o číslo portu samotné služby (5904
).
Dále otevřete novou relaci terminálu a přihlaste se jako janevnc. I zde spusťte VNC server a nastavte heslo pro janevnc:
vncserver
Měli byste vidět podobný výstup, který ukazuje, že relace janevnc poběží na displeji 2.
Nakonec znovu načtěte služby z hlavní relace terminálu:
sudo systemctl daemon-reloadsudo systemctl restart vncserver@:4.servicesudo systemctl restart vncserver@:5.service
Krok 7 – Připojení ke vzdáleným plochám pomocí klienta VNC
Pro tento návod budeme předpokládat, že se uživatelé joevnc a janevnc snaží připojit k serveru CentOS 7 ze svých počítačů se systémem Windows.
Pro přihlášení ke vzdálené ploše bude každý z nich potřebovat klienta VNC pro Windows. Tento klient je stejný jako terminálový klient, například PuTTY, s tím rozdílem, že zobrazuje grafický výstup. K dispozici jsou různí klienti VNC, ale my budeme používat RealVNC, který je k dispozici zde. VNC Viewer pro Mac OS X je ke stažení na stejné stránce a verze pro Mac je poměrně podobná té pro Windows.
Po spuštění programu VNC Viewer se zobrazí následující dialogové okno:
Do pole VNC Server přidejte IP adresu serveru CentOS 7. V poli VNC Server přidejte IP adresu serveru CentOS 7. Za IP adresu serveru zadejte číslo portu 5904, které oddělte dvojtečkou (:). Použili jsme 5904, protože to je port služby VNC pro joevnc.
Rozhodli jsme se také nechat prohlížeč VNC zvolit metodu šifrování. Tato volba zašifruje pouze heslo odesílané po síti. Veškerá následná komunikace se serverem bude nešifrovaná. (V posledním kroku nastavíme zabezpečený tunel SSH.)
Ve skutečnosti se zobrazí právě toto varovné hlášení:
Přijměte prozatím toto varování. Zobrazí se výzva k zadání hesla:
Zadejte heslo VNC joevnc, které jste nastavili dříve.
Otevře se nové okno zobrazující plochu GNOME pro náš vzdálený server CentOS:
Přijměte výchozí uvítací zprávu.
Nyní může joevnc spustit grafický nástroj, například kalkulačku GNOME:
Toto připojení k pracovní ploše můžete nechat otevřené.
Nyní může janevnc spustit také další relaci VNC se serverem CentOS. IP adresa je stejná a port je 5905:
Pokud se janevnc přihlásí prostřednictvím prohlížeče VNC, zobrazí se prázdná plocha s uvítací zprávou, stejně jako tomu bylo u joevnc. Jinými slovy, oba uživatelé nesdílejí instance plochy. joevncova plocha by měla stále zobrazovat kalkulačku.
Pro ukončení relace vzdálené plochy stačí zavřít okno. Tím se však služba VNC uživatele na pozadí na serveru nezastaví. Pokud by služba nebyla zastavena nebo restartována a počítač by nebyl restartován, při příštím přihlášení by byla zobrazena stejná relace plochy.
Zavřete okna VNC Viewer pro joevnc a janevnc. Zavřete také jejich terminálové relace. V hlavním terminálovém okně zkontrolujte, zda jsou služby VNC stále spuštěny:
sudo systemctl status vncserver@:4.service
Výstup ukazuje, že vzdálená plocha je stále spuštěna:
vncserver@:4.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled) Active: active (running) since Sat 2014-11-01 12:06:49 EST; 58min ago Process: 2014 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS). . .
Zkontrolujte druhou službu:
sudo systemctl status vncserver@:5.service
Tato služba je také spuštěna:
vncserver@:5.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:5.service; enabled) Active: active (running) since Sat 2014-11-01 12:42:56 EST; 22min ago Process: 3748 ExecStart=/sbin/runuser -l janevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS). . .
Pokud byste se v tomto okamžiku chtěli znovu přihlásit na plochu joevnc, zobrazí se stejná otevřená aplikace kalkulačka.
To představuje pro správce systému zajímavou výzvu. Pokud se k serveru prostřednictvím VNC připojuje řada uživatelů, možná budete chtít vymyslet nějaký způsob, jak jejich služby VNC zastavit, když už nejsou potřeba. To může ušetřit některé cenné systémové prostředky.
Řešení problémů – pád služby VNC
Při testování a hraní si se službou VNC můžete někdy zjistit, že došlo k pádu služby, který nelze obnovit. Když se pokusíte zkontrolovat stav:
sudo systemctl status vncserver@:4.service
Může se objevit tato dlouhá chybová zpráva:
vncserver@:4.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled) Active: failed (Result: exit-code) since Fri 2014-11-07 00:02:38 EST; 2min 20s ago Process: 2221 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=2) Process: 1257 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Pokus o spuštění služby nefunguje:
sudo systemctl start vncserver@:4.service
Nepodařilo se spustit:
Job for vncserver@:4.service failed. See 'systemctl status vncserver@:4.service' and 'journalctl -xn' for details.
Obvykle je příčina dost jednoduchá. Zkontrolujte /var/log/messages
:
sudo tail /var/log/messages
Související chyba bude vypadat takto:
Nov 7 00:08:36 localhost runuser: Warning: localhost.localdomain:4 is taken because of /tmp/.X11-unix/X4Nov 7 00:08:36 localhost runuser: Remove this file if there is no X server localhost.localdomain:4Nov 7 00:08:36 localhost runuser: A VNC server is already running as :4Nov 7 00:08:36 localhost systemd: vncserver@:4.service: control process exited, code=exited status=2Nov 7 00:08:36 localhost systemd: Failed to start Remote desktop service (VNC).Nov 7 00:08:36 localhost systemd: Unit vncserver@:4.service entered failed state.Nov 7 00:08:36 localhost systemd: Failed to mark scope session-c3.scope as abandoned : Stale file handle
Náprava spočívá v odstranění souboru ve složce /tmp:
sudo rm -i /tmp/.X11-unix/X4
Výstup:
rm: remove socket '/tmp/.X11-unix/X4'? y
Poté spusťte službu VNC:
sudo systemctl start vncserver@:4.service
Obecné řešení problémů
Přestože je to poměrně vzácné, můžete se při práci s VNC setkat i s jinými chybami. Například obrazovka vzdálené plochy může být prázdná nebo viset, relace může spadnout se záhadným chybovým hlášením, prohlížeč VNC se nemusí správně připojit nebo přenášet příkazy do grafického uživatelského rozhraní pro spouštění aplikací atd.
Pro lepší pochopení doporučujeme nahlédnout do souboru /var/log/messages
. Občas může být nutné restartovat server nebo v krajním případě znovu vytvořit službu VNC.
Na vině mohou být také systémové prostředky; možná bude nutné přidat do Dropletu další paměť RAM apod.
Krok 8 – Zabezpečení relací VNC pomocí tunelování SSH
Dosud joevnc i janevnc přistupovali ke svým vzdáleným plochám prostřednictvím nešifrovaných kanálů. Jak jsme viděli dříve, prohlížeč VNC nás na to při připojení upozorní; při zahájení relací je šifrováno pouze heslo. Jakýkoli následný síťový provoz a přenos dat je otevřený pro kohokoli, kdo jej může zachytit uprostřed.
O tunelování SSH
Tady mohou pomoci relace Secure Shell (SSH). Pomocí SSH může VNC běžet v kontextu šifrované relace SSH. Tomu se říká tunelování. Provoz VNC v podstatě využívá protokol SSH, takže veškerá komunikace se serverem je šifrovaná. Tunelování se tomu říká proto, že SSH poskytuje nad VNC obalovou ochranu a VNC běží jakoby v tunelu v rámci SSH. Tunelování SSH lze použít i pro jiné protokoly, například POP, X nebo IMAP.
SSH tunelování pracuje s přesměrováním portů, což je v podstatě prostředek pro překlad přístupu z jednoho konkrétního portu na jiný port na jiném počítači. Pomocí přesměrování portů se klientská aplikace při připojení k portu A běžícímu na počítači A transparentně přesměruje na port B běžící na počítači B. Klientská aplikace o tomto překladu neví a myslí si, že se připojuje k původnímu portu. Přesměrování portů je jednou z funkcí protokolu SSH.
Pro podrobnější informace o tunelování SSH si přečtěte tento návod.
V tomto návodu jsme nakonfigurovali VNC tak, aby běželo na portech 5904 (pro joevnc) a 5905 (pro janevnc).
Pomocí přesměrování portů můžeme nastavit, aby se náš místní klient VNC připojoval k portu 5900 na místním klientském počítači, a ten lze namapovat na port 5905 na vzdáleném serveru. Tento příklad se týká připojení janevnc, ale stejným způsobem můžete postupovat i u jiných klientů.
Při spuštění klientské aplikace VNC ji můžeme nasměrovat na port 5900 na localhost a naše přesměrování portů ji transparentně přenese na port 5905 na vzdáleném serveru.
Poznámka: Aby bylo spojení bezpečné, budete muset pokaždé spustit sekci SSH.
OS X
Na počítači Mac otevřete Terminál.
Zadejte následující informace o připojení a nezapomeňte nahradit your_server_ip
IP adresou vzdáleného serveru:
ssh -L 5900:your_server_ip:5905 janevnc@your_server_ip -N
Zadejte heslo janevnc UNIX. Zdá se, že připojení bude viset; můžete jej nechat běžet tak dlouho, dokud budete používat vzdálenou plochu.
Nyní přejděte k pokynům pro prohlížeč VNC.
Windows
Pro zabezpečení relace VNC janevnc budeme předpokládat, že místní počítač se systémem Windows má nainstalovaný PuTTY. PuTTY je zdarma a lze jej stáhnout odtud.
Jestliže relace VNC a terminálu janevnc ještě nejsou uzavřeny, uzavřete je nyní.
Spusťte PuTTY. Na obrazovce relace se ujistěte, že jste zadali IP adresu serveru a přidělili připojení popisný název, poté klepnutím na tlačítko Uložit uložte údaje o připojení. Všimněte si, jak jsme do pole Hostname zadali username@your_server_ip
:
Dále rozbalte položku nabídky SSH v levém navigačním panelu a vyberte položku X11. Tím se zobrazí vlastnosti předávání X11 pro danou relaci. Zkontrolujte, zda je zaškrtnuto políčko Povolit předávání X11. Tím zajistíte, že SSH bude šifrovat přenosy X Windows, které proudí mezi serverem a klientem:
Nakonec vyberte možnost SSH > Tunely. Do pole Zdrojový port zadejte 5900
. Do pole Destination (Cíl) zadejte název nebo IP adresu serveru, za kterou následuje dvojtečka a číslo portu VNC pro zamýšleného uživatele. V našem případě jsme zadali your_server_ip:5905
.
Alternativně můžete použít port 5902. Dvojka by v tomto případě byla zobrazovacím číslem pro janevnc (vzpomeňte si na zprávu zobrazenou, když janevnc spustil příkaz vncserver
).
Klikněte na tlačítko Přidat a mapování se přidá do části Přesměrované porty. Zde přidáme přesměrování portů pro relaci SSH; když se uživatel připojí k localhostu na portu 5900, spojení bude automaticky tunelováno přes SSH na port 5905 vzdáleného serveru.
Přejděte zpět do položek Relace a uložte relaci pro janevnc. Klikněte na tlačítko Otevřít a otevře se nová relace terminálu pro janevnc. Přihlaste se jako janevnc s příslušným heslem UNIX:
Prohlížeč VNC
Pak znovu spusťte Prohlížeč VNC. Tentokrát do adresy serveru VNC zadejte <^> a nechte server VNC zvolit metodu šifrování:
Klikněte na tlačítko Připojit.
Stále se zobrazí dialogové okno s upozorněním na nešifrovanou relaci, ale tentokrát jej můžete bez obav ignorovat. Prohlížeč VNC neví o portu, na který je přesměrován (ten byl nastaven v právě zahájené relaci SSH), a předpokládá, že se snažíte připojit k místnímu počítači.
Přijetím tohoto varování se zobrazí známá výzva k zadání hesla. Zadejte heslo VNC janevnc pro přístup ke vzdálené ploše.
Jak tedy víte, že relace byla šifrovaná? Když se nad tím zamyslíte, v relaci SSH jsme nastavili přesměrování portů. Pokud by relace SSH nebyla vytvořena, přesměrování portů by nefungovalo. Pokud byste totiž zavřeli okno terminálu a odhlásili se z relace PuTTY a poté se pokusili připojit pouze pomocí programu VNC Viewer, pokus o připojení k localhost:5900
by zobrazil následující chybové hlášení:
Pokud tedy připojení localhost:5900
funguje, můžete si být jisti, že připojení je šifrované.
Pamatujte, že při každém použití VNC budete chtít nejprve navázat spojení SSH, abyste měli jistotu, že je spojení vždy šifrované.
Závěr
Přístup k systému CentOS Linux z rozhraní GUI může výrazně zjednodušit správu systému. Můžete se připojit z libovolného klientského operačního systému a nemusíte být závislí na webových ovládacích panelech hostingu. VNC má ve srovnání s většinou ovládacích panelů mnohem menší rozměry.
Přestože jsme si ukázali, jak se mohou dva běžní uživatelé připojit pomocí svých klientů VNC, ve vážných produkčních prostředích je to sotva praktické. Ve skutečnosti budou mít uživatelé pro přístup k serveru vlastní aplikace nebo prohlížeče. Spuštění několika služeb VNC pro každého uživatele také zbytečně zatěžuje systémové prostředky, nemluvě o rizicích s tím spojených.
Pokud se rozhodnete nainstalovat a spustit VNC na produkčním linuxovém serveru, důrazně doporučujeme používat jej pouze pro administrativní účely.