Portál AbcLinuxu, 1. května 2025 03:25

VNC servery

19.2.2007 00:24 | Přečteno: 4941× | Pracovní postupy | Výběrový blog

Potřeboval jsem zprovoznit na domácím počítači VNC server - zápisek shrnuje moje "zážitky", abych se k tomu mohl jednou vrátit. Varování: není tu nic, co se byste nenašli v nějaké dokumentaci, je to jen shrnutí toho, co jsem dnes vyčetl a zjistil.

Požadavky byly dva: za první jsem chtěl možnost připojit se k existujícímu X sezení, abych mohl rodičovstvu (které objevuje možnosti Internetu a sedí u PC skoro pořád :) názorně asistovat, i když zrovna nebudu doma (to je požadavek zásadní). Za druhé jsem chtěl možnost si spustit si vlastní X sezení, jehož obsah by se neprojevoval na lokálním monitoru, hlavně abych si na dálku mohl blbnout i ve chvíli, kdy někdo chce být přímo u počítače. Naprosto ideální by bylo, kdyby to šlo s jedním jediným VNC serverem.

vnc4server

Nejprve jsem vyzkoušel vnc4server, který má v informacích o balíčku napsáno, že spouští virtuální sezení, ale zároveň má konektor na X server, takže je schopen připojit se k existujícímu přihlášení - nepovedlo se mi ale ani jedno.

Co se konektoru na už běžící X týče, dočetl jsem se o něm jen ve výstupu apt-cache show vnc4server: " This package provides a vncserver to which X clients can connect and the server generates a display that can be viewed with a vncviewer. It contains an X server connector so clients can connect to your local X desktop directly."

man vnc4server už mi ale nepomohlo, nainstalovaná dokumentace totiž zřejmě patří ke staršímu balíčku vncserver, který má v popisu toto: "This server does not support or need a display. You need a vncviewer to see something.", takže se o konektrou nezmiňuje.

Protože mi šlo především o připojení k existujícímu sezení, odložil jsem řešení toho virtuálního na později a pokusil se o přihlášení programem xvnc4viewer. Dostal jsem hlášení o úspěšném spojení, ale plocha domácího PC se nějak nezobrazila a nic jiného se taky nedělo. Nevím proč mě nenapadlo vyzkoušet se připojit přes Krdc, které běžně používám proti x11vnc (viz níže), každopádně jsem neměl zrovna času nazbyt, takže jsem pana xvnc4servera "pochválil" příkazem apt-get remove --purge.

Až bude virtuální sezení aktuální, k tomuto programu se vrátím - jednak musím vyzkoušet zmíněné připojení přes Krdc, jednak se chci poohlédnout po to konektoru, možná to je nějaká binárka, které jsem si teď nevšiml, na netu to určitě bude :D.

x11vnc - osvědčený pomocník

Nakonec jsem nainstaloval x11vnc, s nímž už mám zkušenost - funguje spolehlivě (připojuji se přes Krdc, jak jsem už zmínil výše). Spouštím ho ručně po přihlášení přes SSH. Za poznámku stojí způsob spouštění v různých situacích (ačkoli se to dá vyčíst přímo z výstupu x11vnc v případě nesprávného spuštění, případně z man x11vnc):

Na počítači je jen moje X session a chci se podívat odjinud, co se mi tu děje nebo neděje
Nejjednodušší případ použití, stačí v terminálu zadat x11vnc a server se spustí.
Obecně: na počítači je aspoň jedno X sezení, já se do jednoho z existujích chci připojit (např. vzdálená pomoc uživateli)
První podmínka je, že x11vnc budu spouštět jako uživatel, kterému patří dané X sezení. Nestačí být root - x11vnc by se snažilo použít nesprávný soubor, takže po provedení su je třeba ještě su uzivatel (v případě *ubuntu rovnou sudo su uzivatel). Podmínka druhá je, že známe číslo X sezení, ke kterému se chceme přihlásit - to se dá zjistit programem w nebo who (začíná dvojtečkou, první spuštěné sezení je :0). Potom VNC server spustím příkazem x11vnc -auth ~/.Xauthority -display :{cislo_sezeni} .
Nikdo není přihlášen
x11vnc -auth /cesta/k/auth/souboru , přičemž cestu k souboru lze zjistit pomocí ps -Af | grep X | grep auth . x11vnc je v tomto případě nutné spustit jako root.

Další programy k vyzkoušení

Soudě podle informací z balíčkovacího systému, případně podle zmínek v různých diskusích, bych mohl někdy v nějakém projektu využít i jiné programy související s VNC, které mi teď přijdou potenciálně zajímavé: xwnc, vncsnapshot, tkvnc, rfb, linuxvnc, conspy.

Co je důležité pro všechny VNC programy

U VNC je třeba dbát na bezpečnost - když se VNC server připojí k existujícímu X sezení, zpřístupní jej po síti. Ten, kdo se na tento server připojí, má zhruba stejné možnosti, jako člověk, který sedí na židli před počítačem - vidí totéž a může dělat (skoro) totéž. Je tedy třeba zajistit, aby si - obrazně řečeno - na Vaši židli nemohl sednout kdekdo.

Zabezpečení lze provést ze třech různých stran:

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

19.2.2007 07:48 filo | skóre: 22 | blog: FiloBlog | Ostrava
Rozbalit Rozbalit vše Re: VNC servery
Odpovědět | Sbalit | Link | Blokovat | Admin
Díky za článek, vyzkouším, neb jsem na tom před pár týdny ztroskotal :(. Pokud se chci na Kubuntu dostat přes Hamachi síť (která je sama o sobě šifrovaná) s pomocí VNC, tak jestli to chápu dobře, není třeba provádět další kroky k zabezpečení přenosu (ssh tunel apod.)? Hamachi mám rozchozené, ven chodím přes rdesktop a dovnitř přes Krfb, tak nevím, jestli pro mě bude mít VNC server nějaký přínos. Napadá mě jedině rychlost, dá se obecně říct, že je spojení přes VNC rychlejší než přes Krfb ?
PS: Doufám, že nepíšu terminologicky úplně z cesty, síťařina není zrovna můj obor ;)
19.2.2007 11:07 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: VNC servery
Odpovědět | Sbalit | Link | Blokovat | Admin
Jak x11vnc server funguje:
Rather brute-forcedly: it continuously polls the X11 framebuffer for changes using XShmGetImage(). When changes are discovered, it instructs libvncserver which rectangular regions of the framebuffer have changed, and libvncserver compresses the changes and sends them off to any connected VNC viewers. A number of applications do similar things, such as x0rfbserver, krfb, x0vncserver, vino. x11vnc uses a 32 x 32 pixel tile model (the desktop is decomposed into roughly 1000 such tiles), where changed tiles are found by pseudo-randomly polling 1 pixel tall horizontal scanlines. This is a surprisingly effective algorithm for finding changed regions. For keyboard and mouse user input the XTEST extension is used to pass the input events to the X server. To detect XBell "beeps" the XKEYBOARD extension is used. If available, the XFIXES extension is used to retrieve the current mouse cursor shape. Also, if available the X DAMAGE extension is used to receive hints from the X server where modified regions on the screen are. This greatly reduces the system load when not much is changing on the screen and also improves how quickly the screen is updated.
A jeste existuje moznost prelozit realvnc s modulem pro X server. Ten se pri startu X serveru natahne a je jeho soucasti, takze mozna by mohl byt efektivnejsi.
19.7.2007 18:11 Harvie
Rozbalit Rozbalit vše Re: VNC servery
Gnome ma v sobe podporu vzdaleneho pripojeni na aktualni seanci (myslim, ze jde o vnc server vino), vnc server se spusti pokazde, kdyz se prihlasite a muzete si nastavit heslo a pripadne dotaz pred vpustenim vzdaleneho uzivatele...

Me by spise zajimalo, zda neni neco jako vnc alternativa sshcka, nebo remote desktopu z jednoho nechvalne znameho os. Tedy: pripojim se na server a tam uvidim prihlasovaci dialog (napr. v mem pripade gdm) a tam se teprve prihlasim, jako bych u pocitace sedel...
2.8.2007 16:03 Michal B
Rozbalit Rozbalit vše Re: VNC servery
To umi prave x11vnc, zrovna to zprovoznuju,ale narazil sem na to, ze kdyz se pres vnc prihlasim, tak mi x11vnc spadne a ja ho musim pres ssh znovu nahodit a kdyz se pripojim, tak mam plochu na kterou jsem se predtim nalogoval.... sice to neni moc userfriendly, ale zatim mi to staci :)

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.