Vzdálený grafický přístup na Nymfe

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.

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.

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.

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.

Poznámka: Alternativně lze použít fakultní VPN, potom není potřeba hlásit se přes jump host, ale lze se přihlásit přímo.

  • 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.

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.

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ří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řipojte se ze svého stroje na Nymfe pomocí VNC klienta:

  • 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ámka: 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)