Távoli Linux desktop elérése Windowsról

A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen Pálinkás Endre (vitalap | szerkesztései) 2012. november 1., 11:09-kor történt szerkesztése után volt.

Írta: Pálinkás Endre
Utolsó jelentős módosítás: 2012. szeptember

Néha felmerülhet, hogy Linux operációs rendszeren futó grafikus kezelőfelülettel rendelkező programjainkat egy távoli, Windows alapú rendszerről irányítsuk. Ez a szócikk erre a feladatra gyűjt össze pár megoldást, tapasztalatokkal, és segítséggel a beállításhoz. Különösképp célja a cikknek megvizsgálni a minimalista megoldásokat, amelyek hasznosak lehetnek arra az esetre, ha egy limitált VPS-en szeretnénk grafikus programokat futtatni.

Tartalomjegyzék

1 X Window System

Ahhoz, hogy a témával foglalkozni tudjunk, és kiválasztani a sok távoli asztal elérés megoldás közül a nekünk megfelelőt, nem árt megismerni az X Window System kicsit, illetve annak egy szeletét.
(thumbnail)
forrás:http://en.wikipedia.org/wiki/X_display_manager_(program_type)
Az X kliensek távol is lehetnek. (X Display Manager nem kötelező)

Az X Window Sytemnek hívjuk a protokollok halmaza, melyek a Unix/Linux rendszerek GUI működésének alapjait fektetik le. Emelett hívhatjuk X Window Systemnek egy ezekre az alapokra épített konkrét rendszert is. Röviden X-nek, illetve X11-nek is szokták hívni, mert jelenleg a 11-es verziónál tart. Az X Window System kliens-szerver alapú, lehetővé teszi azt, hogy a grafikus user interfész máshol jelenjen meg, mint ahol a programok futnak. Érdemes kitérni a terminológiára, mert elsőre kicsit szokatlan.

  • X Server: Az alkalmazások és a felhasználó között van. Megjeleníti a felhasználónak a grafikát, és továbbítja az alkalmazások felé a felhasználó bemenetét (billentyűleütések, egérmozgatás).
  • X Client: Az alkalmazások.


  • X Session Manager: Azért felelős, hogy a grafikus asztal állapotát el tudjuk menteni, később ugyanonnan folytatni. (nem biztos, hogy kell nekünk ilyen)
  • X Display Manager: Bejelentkeztetés, session indítás. (Bejelentkező ablakot ad felhasználónév/jelszót kérve, és elindít egy sessiont.) (ilyen sem)
  • X Window Manager: Egy speciális kliens, ami az ablakok kinézetét, mozgatását, méretezését teszi lehetővé. (és ilyen sem)


  • Desktop Environment (DE): Egy adott teljes grafikus felület megvalósítás egy csomagban. Rendszerint saját X Session Manager + X Display Manager + X Window Manager megvalósítás van benne, emelett egyéb dolgok a grafikus felülethez, pl. ikonok, desktop widgetek, háttérképek, stb. Desktop environment pl. a Gnome, KDE, Fluxbox, Xfce, stb.

Elmondhatjuk, hogy ha csak távoli gépről akarjuk a grafikus linux programokat használni, nem feltétlenül van szükségünk desktop environment installálására, se a 3 fent felsorolt managerre. X Servert is futtathatunk a windowsos gépünkön, tehát akár úgy is elkezdhetünk dolgozni, hogy a linuxos gépre csak a futtatandó programot telepítjük, bárminemű körítés nélkül.

2 Tesztkörnyezet

A teszthez használt Linuxos rendszer Debian disztribúciót futtatott, de más disztribúciót futtató felhasználóknak is segítség lehet a szócikk, hiszen nagy eltérések nincsenek. A lentiek közül egyes megoldások a Linuxon kívül más UNIX alapú rendszereken is léteznek, erre a szócikk nem tér ki.

3 X-Server a windows-os gépen

Tehát ha egy linuxos gép előtt ülünk, és a grafikus felületen dolgozunk billentyűzettel, egérrel, akkor az X Server a Linuxon fut. Ha csak távolról, a windowsos gépünkről akarjuk a grafikus felülettel rendelkező linuxos programokat irányítani, az X Server akár a Windows gépen is futhat, és a linuxos gépre nem feltétlenül kell semmit telepíteni a futtatandó programon kívül. Ez nagy előny lehet, ha minimalista megoldást keresünk, a linuxos gépen kevés a memória, gyenge a processzor, és sok tárhelyet sem akarunk használni.
Hátránya viszont, hogy az elindított linuxos programok (X kliensek) rendszerint meghalnak, ha elveszítik a kapcsolatot a távoli X Serverrel. Tehát ha megszakad a helyi hálózati/internetes kapcsolat a két gép között, a használt program lehal, és a munkánk is elveszhet. Ettől még a megoldás nem rossz. Ha nem okoz gondot a futtatandó alkalmazásnál, ha alkalmanként meghal, és a kapcsolat elég stabil, akkor használható megoldás.

3.1 Xming X Server

  • Szükséges hozzá:
    • Windows: Xming X Server (Putty Link-et is felteszi a könyvtárba)
    • Linux: sshd

Az Xming egy pár perc alatt összehozható megoldás. Az Xming X Server most már donationware, tehát adakozni kell a szoftver készítőjének, ha a legújabb változatokat szeretnénk letölteni. A régi változatok is tökéletesen működnek, elérhetők az Xming SourceForge-ról.

(thumbnail)
Xming egy ablakos mód window manager nélkül. A távoli linuxos szerveren futó két alkalmazás "ablaka" nem méretezhető, mozgatható.
(thumbnail)
Xming egy ablakos mód fapados twm window managerrel - ablakok már méretezhetőek, mozgathatóak

Miután elindítottuk az Xming X Server programot a Windows-on, SSH-n keresztül (pl. Puttyval) kell a Linuxhoz csatlakozni, X11 Forwarding (putty beállítás) segítségével a localhost:0 displayt a Windows-ra irányítva. Ezek után elindítunk egy GUI-s programot a linuxos gépen - pl. "iceweasel" böngészőt. Mivel az adott SSH sessionben a display forwardolva a Windowsra, az ablak a Windowsos gépen fog megnyílni, az Xming gyermekeként.

A fentiek segítik megérteni a működést - valójában egyszerűbb a dolgunk, nem kell a puttyval bűvészkednünk. Az Xming X Server-hez tartozik egy XLaunch alkalmazás, melyben begépelhetjük a linuxos gép elérhetőségét (IP, felhasználónév, jelszó), és a futtatandó programot, és már meg is jelenik az alkalmazás ablaka a gépünkön. Nem gond, ha speciális SSH paramétereket szeretnénk (pl. privát kulcs fájl), egy mentett putty session-re is hivatkozhatunk a nevével. Az XLaunch ugyancsak lehetőséget nyújt arra, hogyan jelenjenek meg a Windows-on a linuxos alkalmazások. A lehetőségek:

  • Multiple Windows: minden alkalmazás külön Windows ablakban nyíljon meg
  • One Window: egy főablak, és azon belül jelenik meg minden alkalmazás
  • One Window Without Titlebar: mint az előző, csak nem lesz ablakkerete az Xming főablaknak
  • Fullscreen: teljes képernyős megjelenítés

3.1.1 Egy ablakos mód

Az első lehetőséget leszámítva (ahol minden alkalmazásnak külön Windows ablaka lesz), minden elindított linuxos alkalmazás ugyanabba az Xming ablakba kerül, alapból egymást eltakarva, a méretezés és mozgatás lehetősége nélkül. Ha több alkalmazást futtatunk e 3 megjelenítési mód egyikében, és szeretnénk ablakokat méretezni, mozgatni, kell egy külső window managert is futtatnunk a linuxos gépen. A Desktop Environmenteknek (Gnome, KDE, Xfce stb.) mind saját Window Managere van, ha fent van az egyik, használhatjuk azt. De egyáltalán nincs szükségünk egy teljes desktop environment telepítésére a linuxunkra, elegendő egy fapados window manager telepítése, mint például a twm. Természetesen vannak szebbek is, nézzünk körül itt.

Ha megvan a window managerünk, két lehetőségünk van.
1. Indítsuk el a window managert, ugyanúgy, mint bármely más alkalmazást, melynek a kimenetét a Windows-on szeretnénk látni. Máris tudjuk az ablakokat mozgatni az Xming főablakon belül. (érdemes a háttérben indítani, "twm &")
2. XDMCP mód, ekkor egy speciális, UDP alapú protokollal kommunikál az X Server és a távoli X Display Manager. Ezt a módot Xming fejlesztője is problémás esetnek titulálja, a protokoll alapból nem is titkosított, ráadásul X Display Manager telepítésére is szükségünk lenne. Ezzel a móddal itt nem foglalkozunk részletesebben.

3.1.2 Megjegyzések

  • A tesztnél először az Xming Server csak adminisztrátorként futtatva volt hajlandó működni, és a putty-t sem irányította jól az XLauncher. Egy reboot után rejtélyes módon minden tökéletesen működött.
  • Az XLaunch putty mellett a Cygwin-es ssh.exe-t is tudja használni.


3.2 Cygwin/X

  • Szükséges hozzá:
    • Windows: Cygwin (ejtsd: 'szigvin') környezet a szükséges Cygwin csomagokkal
    • Linux: sshd

Míg az Xming X Server egy kompakt, Windows felhasználóknak nem annyira idegen élményt nyújtó program, a Cygwin egy sokkal robosztusabb megoldás. Fel kell telepítenünk Windows-ra a Cygwint, ami egy teljes, Unix szerű környezetet épít fel egy könyvtárba. Több a lehetőségünk, de összetettebb a beállítás is, és ha a felhasználó csak a távoli asztal elérésére akarja használni a Cygwin-t, nem túl vonzó ötlet egy 260 megabyteos Cygwin környezet feltelepítése. A mérleg másik oldalon viszont az áll, hogy a lehetőségünk is több, és ha valaki már amúgy is használja a Cygwint, akkor külön program feltelepítése nélkül hozzáadhatja a pár szükséges X Server csomagot.

A Cygwin telepítése pár perc, ha szélessávú internettel rendelkezünk. Ki kell választanunk, hogy mely programcsomagokat akarjuk telepíteni.
A Cygwin/X-es megoldáshoz ezekre van szükség az alapcsomagokon kívül:

  • xorg-server
  • xinit
  • openssh
  • opcionálisan még: xorg-docs, X-start-menu-icons

Elindíthatjuk az X servert. Először a Cygwin shell-t kell elindítani Windowsban (cygwin.bat). A Cygwin shellből a Cygwin-es X Server a 'startxwin' paranccsal indítható. Ez a fenti Multiple-Windows módnak felel meg.
Ha 1 windowsos Cygwin X Server ablakon belül szeretnénk minden linux alkalmazást látni, akkor a 'startx' parancsot használjuk. Bővebb információ itt.

Csatlakozáshoz, X11 Forwardinghoz és programindításhoz használhatjuk a korábban bemutatott putty-s módszert, vagy a Cygwin SSH kliensét is:

ssh -X user@ip:port

Állítsuk be a display-t is a linuxos sessionben, ha nem lenne:

export DISPLAY=localhost:10.0

Ezek után indítható a program, és a Windows-ban jelenik meg.

Ha egy ablakba szeretnénk a linux desktopunkat belezsúfolni, itt is szükségünk lesz egy külső window manangerre. Az Xminggel ellentétben itt már három választásunk is van.

  • ssh-ban futtatni egy linuxos window managert
  • XDMCP mód, ekkor kell X Display Manager is, és ez futtatja a Window Managert a linuxos gépen
  • plusz lehetőség: egy Cygwin-es window managert futtatni a windowsos gépen - pl. twm, mwm (lesstif package része), fvwm2, openbox, aewm++, WindowMaker


Személyes véleményem, hogy a Cygwin-es megoldás kényelmetlenebb az Xmingesnél. Esetleg jól jöhet, ha még több terhet le akarunk venni a linuxos gép válláról, és egy esztétikus Windows Managert használni a Windowst futtató gépen.

4 X-Server a linuxos gépen

4.1 VNC

4.1.1 RealVNC

"VNC4" is ide tartozik

4.1.2 TightVNC

4.1.3 X11vnc

4.2 XRDP

Valójában ez is VNC-re épít, MS Remote Desktop Protokollol elérhető...

5 Hibrid megoldások

5.1 NoMachine NX

6 Konklúzió

Személyes eszközök