Tradiční způsob správy serveru je přes ssh a příkazový řádek. Někdy ale potřebujete spustit nějakou aplikaci s GUI na serveru, a protože obvykle nesedáte vedle serveru, a i když ano, server nemusí mít monitor a klávesnici, potřebujete nějaký druh vzdálené plochy.
VNC je pro to dobré řešení, které je široce používané a je docela snadné jej nastavit. Ubuntu má TightVNC v repozitářích a v tomto tutoriálu nastavíme server TightVNC pro více uživatelů na Ubuntu Server 16.04.
Pro GUI použijeme XFCE, což je lehčí alternativa ke GNOME a Unity.
Nainstalujte VNC Server (Tight VNC) a Desktop (XFCE)
Nejprve začneme instalací serveru TightVNC a desktopového prostředí XFCE.
sudo apt install gnome-core xfce4 firefox xfce4-goodies tightvncserver
Poté musíme nakonfigurovat VNC server s heslem pro přihlášení jako uživatel 'miki'
vncserver
Také vás vyzve k zadání hesla pouze pro zobrazení, které potřebujete, pokud chcete, aby se někdo připojil k vaší relaci VNC bez ovládání kurzoru a klávesnice, pouze jako divák. Toto heslo se musí lišit od vašeho hlavního hesla. Pokud neplánujete mít diváky, můžete se rozhodnout nezadávat heslo pouze pro prohlížení. Po dokončení tohoto procesu bude instance VNC spuštěna na portu 5901 a VNCserver započítá tento port jako:1. Pokud spustíte více instancí VNC, budete mít více zobrazovacích portů a obě čísla se zvýší o 1, na :2 a 5902 a tak dále pro každou instanci. Abychom mohli pokračovat v konfiguraci, musíme ve skutečnosti zabít všechny instance serveru VNC. To provedeme následujícím příkazem:
vncserver -kill :1
Poté je možné upravit konfigurační soubor pro VNC server a vybrat, které desktopové prostředí se spustí po připojení k VNC serveru. Soubor, o kterém mluvím, se nazývá xstartup a nachází se ve skrytém adresáři .vnc v ~/ dir. Nejprve zálohujte tento soubor
mv ~/.vnc/xstartup ~/.vnc/xstartup.backup
A poté vytvořte nový soubor z čistého listu
nano ~/.vnc/xstartup
Do tohoto prázdného souboru vložte těchto několik řádků:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Přidejte spustitelný bit do souboru tihs
sudo chmod +x ~/.vnc/xstartup
Dále můžeme znovu spustit VNC server
vncserver
Připojování k serveru VNC
Dále se musíme připojit k serveru VNC, abychom zjistili, zda naše nastavení funguje. Můžeme použít libovolného klienta VNC, jako je například Vinagre nebo Remote Desktop Viewer, jak se mu také říká. Nejprve jej nainstalujte a spusťte
sudo apt install vinagre
Zadejte název vašeho serveru, port 5901 a klikněte na připojit. Měli byste být vyzváni k zadání hesla a poté byste se měli dostat do XFCE
K této relaci se můžete připojit z neomezeného počtu počítačů, ale pak byste všichni ovládali jeden kurzor myši a měli stejnou relaci. Pokud někteří uživatelé zadají heslo pouze pro zobrazení (za předpokladu, že jste je vytvořili), nebudou mít kontrolu nad kurzorem, ale budou stále v jedné relaci a budou sledovat jednu stejnou obrazovku.
Více uživatelů
Je možné mít více relací VNC, které se navzájem neruší. To se provádí vytvořením libovolného počtu uživatelů a každý uživatel bude mít svůj vlastní zobrazovací port a svou vlastní instanci serveru VNC. A na oplátku bude provozovat svou vlastní instanci desktopového prostředí, nebo to může být zcela samostatné DE. Začněme nejprve přidáním nového uživatele
sudo adduser newuser
Dále se přihlásíme jako tento uživatel
su newuser
A pojďme vytvořit heslo pro nového uživatele
vncserver
Kromě hesla to také vytvořilo nový proces, který naslouchá na portu 5902. Abychom mohli upravovat konfigurační soubor, musíme tento proces ukončit.
vncserver -kill :2
A musíme vlastně zopakovat proces z dřívějška. Nejprve zálohujte soubor xstartup
mv ~/.vnc/xstartup ~/.vnc/xstartup.backup
Poté vytvořte nový od začátku
nano ~/.vnc/xstartup
Poslední tři řádky níže
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
A udělejte jej spustitelným:
sudo chmod +x ~/.vnc/xstartup
Nyní spusťte vncserver pro spuštění procesu
vncserver :2
A nyní se můžete připojit na portu 5902 a mít samostatnou relaci.
Jak nastavit tunelování SSH
Zatím se nám podařilo navázat spojení přímo na display porty, v našem případě 5901 a 5902. Ale co když jsou ty porty uzavřeny firewallem a je z nějakého důvodu nepraktické je otevírat. V takovém případě existuje řešení, můžeme použít tunelování SSH. Port 22 nebo jakýkoli jiný port, který používáte pro přístup SSH na serveru, lze použít k oklamání prohlížeče VNC, že server VNC běží na localhost na portu 5901 nebo 5902. Pomocí tohoto příkazu vytvoříte tunel SSH:
ssh -L 5902:127.0.0.1:5902 [email protected]
Nezapomeňte změnit zvýrazněnou část na vaši IP adresu a uživatelské jméno.
Poté můžete spustit Vinagre nebo Remmina a jako svou adresu zadat localhot:5902. Bude si myslet, že vzdálená plocha je na localhost a bude směrovat provoz přes ssh port na váš server, pokud je aktivní SSH připojení.
Vytváření systémových jednotek
To vše je dobré, když ručně nastavíte uživatele a server přes SSH, ale musíte to opakovat při každém restartu serveru. Abychom tomu zabránili, udělejme soubor systemd unit. To je nový vymyšlený název skriptu pro spuštění staré školy. Ve skutečnosti budeme muset vytvořit dva pro dva uživatele, nejprve vytvořte jednoho
sudo nano /etc/systemd/system/[email protected]
Tam jo vložte tuto konfiguraci
[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
Pak uděláte další:
sudo nano /etc/systemd/system/[email protected]
A vložte stejné věci, jen v obou případech změňte uživatelské jméno pro své vlastní uživatele. Nyní musíme zabít staré procesy, pokud stále běží, a znovu načíst soubory jednotky
vncserver -kill :2
vncserver -kill :1
sudo systemctl daemon-reload
A začněte používat soubory jednotek
sudo systemctl start vncserver@1
sudo systemctl start vncserver@2
A pokud chcete vnc server při každém spouštění, uděláte totéž jako výše ještě jednou, místo spuštění povolíte.
Závěr
V tomto tutoriálu jsme se naučili, jak nainstalovat a nakonfigurovat server VNC se dvěma uživateli na Ubuntu 16.04. Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.