Vzdálený grafický přístup na linuxové stanice

Tento návod popisuje připojení na stroje nymfe*, ale dá se obdobně 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 souboru config 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:
  • Připojení tímto postupem běží přes X.Org, zatímco výchozí grafické sezení na stroji 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 zkratkou Ctrl-C a spusťte gnome-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é pomoct systemctl --user stop dbus ssh-agent gpg-agent)