Vzdálený grafický přístup na linuxové stanice
Tento návod popisuje připojení na stroje nymfe*, ale dá se obodbně použít i pro stroje musa*.
Návod pro Windows 10 a Linux
Před přihlášením z Windows je potřeba aktivovat SSH klienta, viz návod.
1. Nastavení lokální proměnné LOGIN
Otevřete Windows PowerShell
(, tip: vložit ze schránky lze pravým tlačítkem myši,
kopírovat Enter
),
nebo Bash shell ().
Nastavíme proměnnou LOGIN
(v příkazu níže nahraďte "xlogin" za svůj fakultní login):
Windows
PS C:\Users\user> $LOGIN="xlogin"
Linux
local$ LOGIN=xlogin
2. Výběr stroje Nymfe a portu
Náhodně vybereme jednu z trvale běžících Nymfe a také port, který se použije pro VNC:
Windows
PS C:\Users\user> $NN= "0" + $(Get-Random -Maximum 3 -Minimum 1) PS C:\Users\user> $LC_PORT = $((5900 + $(Get-Random -Maximum 100))) PS C:\Users\user> echo $LC_PORT
Vypsané číslo portu si poznačte pro pozdější použití.
Linux
local$ NN=0$((RANDOM % 2 + 1)) && \
export LC_PORT=$((5900 + RANDOM % 100)) && \
echo $LC_PORT >/tmp/fi-nymfe-vnc-port
3. Vytvoření SSH tunelu
Stroje Nymfe jsou dostupné pouze ze sítě FI, proto je potřeba se přihlásit přes Aisu. Připojíme se přes SSH, zapneme kompresi a vytvoříme tunel. Heslo budete muset zadat dvakrát (pokud nepoužíváte SSH klíč) a při prvním spojení budete také muset potvrdit SSH klíče.
Cílem tohoto bodu je bezpečně zpřístupnit VNC port Nymfe na lokálním stroji. Alternativně lze použít fakultní VPN – pak není potřeba při přihlašování přes SSH používat jump host.
Windows
SSH ve Windows má bug (napsáno v únoru 2020), kvůli kterému nefunguje přepínač
-J
(jump host). Lze to ale obejít pomocí konfiguračního souboruconfig
v domovském adresáři ve složce.ssh
.Vytvořte soubor
C:\Users\user\.ssh\config
("user" je Váš uživatel ve Windows) s následujícím obsahem (nahraďte "XLOGIN" za svůj fakultní login):Host nymfe*.fi.muni.cz ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe XLOGIN@aisa.fi.muni.cz -W %h:%p
Nyní se můžeme připojit:
PS C:\Users\user> ssh -C $LOGIN@nymfe$NN.fi.muni.cz -L $LC_PORT":localhost:"$LC_PORT
Linux
local$ ssh -CJ $LOGIN@{aisa,nymfe$NN}.fi.muni.cz -L $LC_PORT:localhost:$LC_PORT -o SendEnv=LC_PORT
4. Nastavení hesla pro VNC
Nastavíme náhodné VNC heslo (je to vhodné vzhledem na možnost útoku na něj hrubou silou za běhu VNC serveru), heslo si poznačte. Tento krok stačí udělat jednou při prvním použití tohoto návodu, ale můžete jej také opakovat pokaždé.
nymfe$ { pwgen 8 1 | tee /dev/std{out,err}; echo n; } | vncpasswd; echo
5. Nastavení typu grafického sezení
Zabezpečíme nastavení typu grafického sezení (tento krok není potřeba opakovat):
nymfe$ test -f ~/.dmrc || echo -e "[Desktop]\nSession=default" >~/.dmrc
6. Vytvoření sezení
Vytvoříme sezení x11vnc
včetně vytvoření nového X serveru. Můžete změnit rozměry
vzdálené plochy úpravou parametru -geometry
.
Z Windows ()
nefunguje přeposílání proměnných, proto "$LC_PORT" v příkazu nahraďte za číslo
portu, které jste získali v kroku 2.
nymfe$ x11vnc -auth .Xauthority -N -localhost -rfbport $LC_PORT -usepw -create -geometry 1280x1024
Okno terminálu nezavírejte.
7. Připojení k Nymfe
Připojte se ze svého stroje na Nymfe pomocí VNC klienta (použijte heslo z kroku 4):
Windows
Pro Windows můžete stáhnout např. Real VNC Viewer (lze vybrat i standalone verzi bez nutnosti instalace).
Adresa:
localhost:LC_PORT
("LC_PORT" nahraďte za číslo portu z kroku 2).Varováním o nešifrovaném spojení se nemusíte zneklidňovat, spojení z Vašeho stroje na Nymfe je šifrované díky SSH tunelu.
Linux
local$ vinagre localhost:$(cat /tmp/fi-nymfe-vnc-port)
Poznámky:
- Tento postup využívá X.Org, zatímco lokální sezení běží přes Wayland. Uživatelské prostředí se tedy může drobně lišit.
Pokud se Vám zobrazí jenom černé pozadí s bílým terminálem (
xterm
), zřejmě je problém s nastavením sezení. V takovém případě jej zkuste přes tento terminál spustit ručně:xterm$ gnome-session
Korektní ukončení sezení
- odhlaste se ze sezení Gnome, které ukončí VNC klienta a také VNC i X server (může chvíli trvat, odhadem 20 sekund, než dostanete výzvu Log Out: počkejte)
- pokud krok výše z nějakého důvodu selže, ukončete
x11vnc
zkratkouCtrl-C
a spusťtegnome-session-quit --force --logout
- v každém případě po sobě zkontrolujte pozůstatky procesů a zabijte je
(
ps ux
,kill PID
, nebo pokud vám na stroji neběží další grafické procesy, může také pomoctsystemctl --user stop dbus ssh-agent gpg-agent
)