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

A Unix/Linux szerverek üzemeltetése wikiből
(Változatok közti eltérés)
(VNC)
(VNC)
96. sor: 96. sor:
 
=== VNC ===
 
=== VNC ===
 
A VNC technológiát az angol Olivetti & Oracle Research Lab, röviden ORL-ben fejlesztették ki, eredetileg ingyenes, open source megoldásként. Célja a platformfüggetlen, egyszerű távoli asztal elérés. Az ORL 2002-ben bezárt, és az eredeti fejlesztők egy része megalapította a RealVNC Ltd. céget, mely ingyenes, és extra funkciókkal ellátott fizetős változatokat ad ki.
 
A VNC technológiát az angol Olivetti & Oracle Research Lab, röviden ORL-ben fejlesztették ki, eredetileg ingyenes, open source megoldásként. Célja a platformfüggetlen, egyszerű távoli asztal elérés. Az ORL 2002-ben bezárt, és az eredeti fejlesztők egy része megalapította a RealVNC Ltd. céget, mely ingyenes, és extra funkciókkal ellátott fizetős változatokat ad ki.
  +
 
Az utóbbi években megjelent új verziókhoz forráskód már nem került kiadásra, és most már az 5-ös verziószámnál tart a RealVNC. Az ingyenes változat binárisként továbbra is elérhető Debian, Redhat, Solaris, HP-UX, AIX rendszerekre. Emellett van egy generikus Linux csomag, binárisokkal, és persze egy Windows és MAC változat is. Ha a hivatalos binárisokat akarjuk használni, szükségünk lesz egy ingyenes licenszre is. Mi néhány licenszt nem igénylő változatot fogunk bemutatni.
 
Az utóbbi években megjelent új verziókhoz forráskód már nem került kiadásra, és most már az 5-ös verziószámnál tart a RealVNC. Az ingyenes változat binárisként továbbra is elérhető Debian, Redhat, Solaris, HP-UX, AIX rendszerekre. Emellett van egy generikus Linux csomag, binárisokkal, és persze egy Windows és MAC változat is. Ha a hivatalos binárisokat akarjuk használni, szükségünk lesz egy ingyenes licenszre is. Mi néhány licenszt nem igénylő változatot fogunk bemutatni.
 
A VNC programok mind az ORL-ben kifejlesztett RFB protokollt használják, mely távoli hozzáférést biztosít a GUI-khoz. Mivel framebuffer szinten működik, platformfüggetlen. Az ORL bezárása után is történtek fejlesztések a protokollban, az aktuális protokoll elérhető a RealVNC honlapján.
 
A VNC programok mind az ORL-ben kifejlesztett RFB protokollt használják, mely távoli hozzáférést biztosít a GUI-khoz. Mivel framebuffer szinten működik, platformfüggetlen. Az ORL bezárása után is történtek fejlesztések a protokollban, az aktuális protokoll elérhető a RealVNC honlapján.
 
   
 
==== vnc4server ====
 
==== vnc4server ====

A lap 2012. november 2., 12:39-kori változata

Í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. Nagyon sokféle beállítási, és használati lehetőség elképzelhető. Ennek a cikknek két fontosabb vonulata a minimalista megoldások feltérképezése, és annak megállapítása, hogy egyes megoldásoknál mely komponensek és lépések elengedhetetlenek. Hasznos lehet a cikk azoknak, aki erősen limitált VPS-en szeretnénk grafikus programokat futtatni, illetve aki kicsit meg szeretné érteni az egyes megoldások működését.

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-et, legalábbis 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

A VNC technológiát az angol Olivetti & Oracle Research Lab, röviden ORL-ben fejlesztették ki, eredetileg ingyenes, open source megoldásként. Célja a platformfüggetlen, egyszerű távoli asztal elérés. Az ORL 2002-ben bezárt, és az eredeti fejlesztők egy része megalapította a RealVNC Ltd. céget, mely ingyenes, és extra funkciókkal ellátott fizetős változatokat ad ki.

Az utóbbi években megjelent új verziókhoz forráskód már nem került kiadásra, és most már az 5-ös verziószámnál tart a RealVNC. Az ingyenes változat binárisként továbbra is elérhető Debian, Redhat, Solaris, HP-UX, AIX rendszerekre. Emellett van egy generikus Linux csomag, binárisokkal, és persze egy Windows és MAC változat is. Ha a hivatalos binárisokat akarjuk használni, szükségünk lesz egy ingyenes licenszre is. Mi néhány licenszt nem igénylő változatot fogunk bemutatni. A VNC programok mind az ORL-ben kifejlesztett RFB protokollt használják, mely távoli hozzáférést biztosít a GUI-khoz. Mivel framebuffer szinten működik, platformfüggetlen. Az ORL bezárása után is történtek fejlesztések a protokollban, az aktuális protokoll elérhető a RealVNC honlapján.

4.1.1 vnc4server

A utolsó nyílt forráskódú változat a 4.1.3, mely VNC Open néven elérhető a RealVNC honlapján. Például a Debianos vnc4server csomag is innen származik, a 4.1.1 verzióból.

Itt a vnc4server csomagról lesz szó. Ha feltelepítjük, az magába foglal egy speciális X Server-t, az Xvnc-t. Ha elindítjuk a VNCServert, elindul ez az X Server - első indításkor be kell állítanunk egy jelszót. Ezután egy windowsos kliensről már csatlakozhatunk is - a VNC kliensek tapasztalataim szerint kompatibilisek a különböző szerver megvalósításokkal. A display 1-hez a 6901-es port tartozik, és így tovább. Ezek után ha beállítottuk a default display-t (export DISPLAY=localhost:1.0 ), a futtatott programok már a VNC-s X szerverre küldik a képüket, és irányíthatjuk őket Windowsról. Persze direktbe is küldhetünk egy programot adott display-re ( "DISPLAY=localhost:1 iceweasel &").

Alapból egy sivár grafikus felületet kapunk, a fapados 'twm' window managerrel. Ezen a home könyvtárban lévő .vnc/xstartup konfig fájlban változtathatunk - az "x-window-manager &" sort átírhatjuk egy másik Window managerre, pl. Openbox (openbox &), de elindíthatunk egy teljes Desktop Environment-et is, Gnome-os desktopunkat (gnome-session &), KDE-set (startkde &), Xfce-t (startxfce4 &), stb. VNC esetében az X-Server a linuxos gépen fut, így bármikor le-föl csatlakozhatunk, és folytathatjuk a munkát, ahol abbahagytuk. Ha le szeretnénk lőni az VNC-s X-Server-t, így tehetjük meg az 1-es display esetén: "vncserver -kill :1".

Ha más felbontással szeretnénk elindítani az VNC-s X-Server, a következőképpen indítsuk: "vnc4server -geometry 1280x960".

Sajnos az ingyenes RealVNC változatok nem adnak titkosítást az adatforgalomra. Ezt orvosolni tudjuk egy VPN létrehozásával, vagy egy SSH tunnellel pl. puttyban (1-es display esetén a windowsos 5901-es portot SSH-n keresztül a távoli gépen lévő localhost:5901-re forwardoljuk, így e putty kapcsolat létrehozása után már a VNC klienssel localhost:5901-re kapcsolódva SSH tunnelen át, titkosított adatforgalommal érhetjük el a linuxos gépet). Érdemes SSH compression-el, és nélküle is próbálkozni, a kapcsolatunk sebessége szerint lehet az egyik, vagy másik gyorsabb.

Még megemlítjük, hogy a VNC beállítható, hogy XDMCP segítségével egy Display Manager login képernyőt is adjon, és HTTP szerverként is tud üzemelni, ekkor a megfelelő portra csatlakozva a távoli kliens browserből be tud lépni az asztalra, egy Java Applet segítségével.

4.1.2 TightVNC

A tightvncserver ugyanúgy működik mint az előbb tárgyalt vnc4server - ugyanúgy a RealVNC nyílt forrású változatára alapul. Vannak benne TightVNC specifikus részek, melyek elvileg meggyorsíthatnák a kapcsolatot. Az én környezetemben nem tapasztaltam észrevehető különbséget - lassú kapcsolattal rendelkező szerver esetén lehet van. Ekkor érdemes a TightVNC klienst használni.

4.1.3 x11vnc

Az előbb bemutatott két VNC variáns virtuális X Server-t futtat, amit távolról elérhetünk. Ha már van egy X Serverünk, melyet szoktunk lokálisan is használni (értsd: monitor, keyboard, mouse), és ezt a már meglévő desktopot szeretnénk távolról elérni, az x11vnc egyszerű megoldást nyújt. A legegyszerűbb futtatási módja, ha egyenesen a grafikus desktopból indítjuk el egy shellből - ekkor nem jöhetnek szóba x11 permission problémák. Egyébként a fenti kettőhöz hasonlók a beállítási lehetőségeink, és a kapcsolat titkosítását magunknak kell megoldanunk.

4.2 XRDP

A Microsoft Remote Desktop protokollját használó szerver - ennek a segítségével a windowsos felhasználók a megszokott remote desktop kliensükkel tudnak egy linuxos asztalhoz csatlakozni. A helyzet azonban nem ennyire egyszerű - az XRDP valóban megvalósít egy RDP szervert, de kell alá egy futó VNC szerver is, ezzel kommunikál a Linux oldalon. Így tulajdonképpen felfogható egy proxyként is egy RDP kliens és VNC szerver között.

Debianban meglepően gyorsan működésre lehet bírni, az 'xrdp' package-t installálva azonnal csatlakozhatunk a microsoftos klienssel. Az XRDP szerverhez való csatlakozáskor először egy session manager ugrik be, itt kell kiválasztanunk a VNC szervert, beírni az ip-t (localhost), portot, és a jelszót. Tehát az XRDP szerver egy meglévő VNC szerver mellé is gyorsan odarakható.

A debianos csomag az előbb taglalt vnc4servert használja, így a fentiek segíthetnek a testre szabásban.

Ugyancsak előny, hogy az RDP-ben a titkosítás adott, így nincs szükség tunnelre vagy VPN-re. Egyes netes források szerint a sima VNC-s kapcsolatnál gyorsabb, azzal az indoklással, hogy a VNC protokoll, ami lassabb az RDP-nél, csak lokálisan játszik szerepet, míg a valódi hálózati forgalomhoz az RDP protokoll szerint történik. Én is gyorsnak tapasztaltam az XRDP-s asztal elérést, de hogy tényleg gyorsabb-e, nem tudom.

Egyébként csináltak egy VNC nélküli, valódi XRDP szerver is X11rdp néven, de erről nincs sok információ, és nincs könnyen elérhető/installálható formában.

5 Hibrid megoldások

5.1 NoMachine NX

6 Konklúzió

Személyes eszközök