Ero sivun ”VNC” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
(välitallennus (osittain moinmoinin muodossa))
 
p (malline kait myös tännekin)
 
(23 välissä olevaa versiota 7 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
VNC (''Virtual Network Computing'') on [[protokolla]] tietokoneen etäkäyttöön graafisesti.
{{Perustietoa}}
'''VNC''' (''Virtual Network Computing'') on [[protokolla]] tietokoneen [[X|graafiseen]] etäkäyttöön tai pelkkään etäkatseluun. VNC-protokolla on avoin ja alustariippumaton ja sitä tukevia palvelin- ja asiakasohjelmistoja löytyy kaikille yleisimmille käyttöjärjestelmille.


VNC löytyy useimpien jakeluiden [[paketinhallintajärjestelmä|paketinhallinnasta]]. Esimerkiksi [[Debian]]issa ja siihen pohjautuvissa jakeluissa (mm. [[Ubuntu]]ssa) asiakasohjelma löytyy paketista <tt>vncviewer</tt>. Koneella, johon yhdistetään on oltava käynnissä [[SSH]]-palvelinohjelma (esim. paketti <tt>openssh-server</tt>). VNC ottaa SSH-yhteyden koneiden välille oletuksena porttiin 22, joten [[palomuuri]] ei saa estää SSH-liikennettä tähän porttiin.
VNC-yhteys ei ota mitään kantaa ruudulla näkyvien käyttöliittymäelementtien muodostumistapaan, vaan kuvansiirto tapahtuu pikseli kerrallaan ([[wikipedia:RFB protocol|RFB-protokolla]]). Tämä mahdollistaa käyttöjärjestelmäriippumattomuuden sekä asiakasohjelman yksinkertaisuuden. VNC on toisaalta tästä syystä usein hitaampi verrattuna [[X Window System]]in sisäänrakennettuun etäkäyttömahdollisuuteen (jota käytetään esimerkiksi [[SSH]]-yhteyden yli tai [[graafinen kirjautumisohjelma|graafisten kirjautumisohjelmien]] [[XDMCP]]-toiminnon kautta), missä verkon yli lähetetään samankaltaiset ohjaussignaalit kuin paikallisessakin käytössä.


VNC löytyy myös Windowsille, esimerkiksi [http://www.realvnc.com/products/personal/ Realvnc].
Alkuperäinen, vuonna 1995 kehitetty VNC-ohjelmisto julkaistiin [[GPL]]-lisenssin alaisuudessa, mikä on mahdollistanut lukuisten [[haara|haarautettujen]] VNC-versioiden synnyn. Eri VNC-versiot ovat yhteensopivia toistensa kanssa, vaikka useimmista versioista löytyykin omia parannuksiaan. Tunnetuimpia versioita ovat:


== Käyttö ==
*[[RealVNC]] - VNC:n alkuperäisten kehittäjien ylläpitämä palvelin- ja asiakasohjelmisto, josta on saatavilla myös kaupallinen versio. RealVNC:n ilmainen, GPL-lisensoitu versio on saatavilla Linuxille, muille Unix-johdannaisille sekä Windowsille. RealVNC-asiakasohjelma löytyy useimpien Linux-[[jakelu]]iden [[paketinhallinta|paketinhallinnasta]] nimellä <tt>vnc</tt> tai <tt>[[vncviewer]]</tt>.
Graafisen etäyhteyden ottaminen riippuu siitä, onko kohdekoneella jo käynnissä [[X]]-istunto vai onko se käynnistettävä.
*[[TightVNC]] [http://www.tightvnc.com/] - Linuxille ja Windowsille saatavilla oleva, GPL-lisensoitu asiakas- ja palvelinohjelma. Sisältää oman edistyneemmän pakkausmetodinsa, joka mahdollistaa nopeammat yhteydet. Löytyy useimmista jakeluista nimellä <tt>tightvnc</tt>.
*[[TigerVNC]] - [[haara]]utettu versio RealVNC:stä, jonka vapaan version kehitys on viime vuosina ollut pysähdyksissä. Sisältää mm. edistyneemmän pakkausmenetelmän, käännökset eri kielille, [[IPv6]]-tuen sekä automaattisen ssh-tunneloinnin [[Unix]]/Linux-koneilla (mikäli sekä asiakas että palvelin käyttävät TigerVNC:tä). Löytyy yleensä <tt>tigervnc</tt>- ja <tt>tigervnc-server</tt>-nimisistä paketeista.
*UltraVNC - GPL-lisensoitu asiakas- ja palvelinohjelmisto paremmalla salauksella ym. lisäominaisuuksilla. Vain Windowsille.
*[[Xvnc]] - mm. RealVNC:n ja TightVNC:n mukana tuleva palvelinohjelmisto ja "virtuaalinen" [[X]]-palvelin, joka luo VNC-asiakasohjelmien käyttöön palvelinkoneen fyysisestä näyttölaitteesta riippumattoman X-istunnon. Xvnc löytyy useimmista jakeluista nimellä <tt>vnc-server</tt>, <tt>xorg-X11-Xvnc</tt> tai <tt>X11-server-xvnc</tt>. Xvnc käynnistyy helpoiten <tt>vncserver</tt>-skriptin avulla.
*[[x11vnc]] - Jo olemassaolevaa, fyysiseen näyttöön liitettyä X-palvelinta hyödyntävä VNC-palvelin. Löytyy useimmissa jakeluissa paketista <tt>x11vnc</tt>.
*[[vino]] - graafisesti hallittava VNC-palvelin [[GNOME]]lle.
*[[KRDC]] - [[KDE]]:n VNC- ja [[RDP]]-asiakasohjelma. Uudelleenkirjoitettu lähes kokonaan KDE:n 4.0-versiota varten.
*[[Krfb]] - KDE:n graafinen VNC-palvelin. Tukee mm. sähköpostitse lähetettäviä kutsuja etäyhteyteen.
*[[Vinagre]] - Asiakasohjelma VNC:n ja [[SSH]] etätyöpöydän käyttöön.


== Yhteys koneelle, jossa et ole kirjautuneena ==
==Käyttö==
Aluksi on otettava [[SSH]]:lla yhteys koneeseen johon, haluat ottaa graafisen yhteyden. Yhteys on otettava käyttäen SSH:n valitsinta <tt>-L</tt>, jolloin luodaan SSH-tunneli (lisätietoja [[SSH#Tunneli|SSH-artikkelissa]]):
Useimmista muista etäkirjautumisprotokollista poiketen VNC vaatii, että käyttäjän, jonka istuntoa halutaan etäkäyttää, on jo oltava etäkoneella kirjautuneena ja myöskin käynnistänyt VNC-palvelinohjelman omilla oikeuksillaan <span style="font-size: 0.9em;">(on tosin teoriassa mahdollista käynnistää VNC-palvelin [[nohup]]-ohjelman avulla ja sen jälkeen kirjautua ulos)</span>.
  ssh kayttajanimi@palvelin -L 5903:localhost:5904
 
5903 on portti koneessa, josta otat yhteyttä ja 5904 on portti koneessa, johon olet ottamassa yhteyttä ja jota palvein asetetaan kuuntelemaan.
Koska Linux on monen käyttäjän käyttöjärjestelmä, voidaan VNC-asiakkaille avata joko kokonaan oma X-istunto omine ohjelmineen tai sitten antaa heidän etäkäyttää tai -katsella valmista istuntoa, jolloin samaa istuntoa käyttää useampi käyttäjä. Yhden käyttäjän käyttöjärjestelmissä (esimerkiksi Windows) on mahdollista vain olemassaolevan istunnon yhteiskäyttö. Erillisten X-istuntojen luominen toteutetaan käyttämällä [[Xvnc]]-palvelinta, jolloin X-istunto ei ole yhteydessä fyysiseen näyttölaitteeseen. Saman istunnon yhteiskäyttöön taas käytetään [[x11vnc]]-palvelinta, jolloin paikallinen käyttäjä ja etäkäyttäjä jakavat samat ikkunat, [[hiiri|hiiren]] kursorin ym.
 
VNC:n oletuksena käyttämä salaus on heikko ja mm. salasana on helppo murtaa. Poikkeuksena tästä ovat RealVNC:n kaupallinen versio sekä UltraVNC (vain Windows), joihin on lisätty tuki tehokkaammalle salaukselle. Jos VNC-yhteyttä halutaan käyttää muualla kuin turvallisessa kotiverkossa, on tehokkaampi salaus käytännössä välttämätön. VNC:n ei-kaupallisilla Linux-toteutuksilla ylimääräinen salaus onnistuu helpoiten välittämällä VNC-liikenne [[SSH#Tunneli|SSH-tunnelin]] kautta. Tällä menetelmällä voidaan myös kiertää mahdolliset palomuuriasetukset, joissa VNC:n oletuksena käyttämät portit <tt>5900-5906</tt> on suljettu, mutta SSH:n 22-portti sallittu. Tässä ohjeessa neuvotaan VNC-yhteyden muodostaminen SSH-tunnelin kautta.
 
Jotta tämä voisi toimia, täytyy paikalliselta koneelta löytyä SSH-asiakasohjelma ja etäkoneelta ajossa oleva SSH-palvelin (<tt>sshd</tt>). Molemmat löytyvät yleensä paketista <tt>openssh</tt>, tosin joissakin jakeluissa SSH-asiakasohjelmat on eriytetty pakettiin <tt>openssh-clients</tt> ja <tt>sshd</tt> pakettiin <tt>openssh-server</tt>. Lisätietoja SSH-palvelimen pystyttämisestä löytyy artikkelista [[SSH]].
 
Ennen yhteyden luomista on paikallisella koneella luonnollisesti oltava myös jokin VNC-asiakasohjelma. Hyvä valinta on esimerkiksi [[TightVNC]], joka käyttää RealVNC:tä tehokkaampaa pakkausta. TightVNC löytyy useimmissa jakeluissa paketista <tt>tightvnc</tt>.
 
===Yhdistäminen erilliseen X-istuntoon===
Luodaan SSH-tunneli (valitsin <tt>-L</tt>) etäkoneeseen ''palvelin'':
  ssh kayttajanimi@palvelin -L 5903:palvelin:5904
5903 on portti paikallisessa koneessa ja 5904 on portti etäkoneessa, johon ollaan ottamassa yhteyttä. Voit myös käyttää valitsinta <tt>-C</tt>, joka aiheuttaa yhteyden pakkaamisen kompensoiden VNC:n puutteellisia pakkaustoimintoja. Toisaalta tämä saattaa jossain määrin lisätä yhteyden viivettä. Pakkauksella varustettu tunneli avattaisiin näin:
  ssh kayttajanimi@palvelin -CL 5903:palvelin:5904


Seuraavaksi on käynnistettävä <tt>vncserver</tt> koneella, johon olet ottamassa yhteyttä. <tt>vncserver</tt> löytyy yleensä paketinhallinnasta paketista <tt>vncserver</tt>. Se käynnistetään komennolla
Etäkoneella on nyt käynnistettävä VNC-palvelin. Tämä edellyttää saman <tt>tightvnc</tt>-paketin asentamista kuin paikallisellakin koneella. Palvelin käynnistetään komennolla
  vncserver -geometry 800x600 -depth 16 :4  
vncserver :4
missä
jossa <tt>:4</tt> tarkoittaa työpöydän numeroa (tämä määrittää myös kuunneltavaksi porttiosoitteeksi <tt>5904</tt>:n). Halutessa voidaan määrittää myös näytön resoluutio (valitsin <tt>-geometry</tt>) sekä värimäärä (<tt>-depth</tt>), esimerkiksi
*<tt>geometry</tt> kertoo ruudun resoluution,
  vncserver -geometry 1024x768 -depth 16 :4
*<tt>depth</tt> värien määrän ja
Ensimmäisellä kerralla kun palvelin käynnistetään, kysytään myös yhteydelle asetettavaa salasanaa (tämä on siis eri salasana kuin varsinainen käyttäjän salasana). Salasana tallentuu tiedostoon <tt>.vnc/passwd</tt>. Sitä voi vaihtaa komennolla <tt>vncpasswd</tt>.
*<tt>:4</tt> on käytettävän työpöydän numero (ja joka laittaa kuuntelemaan porttia 5904)


Komennolla <tt>vncpasswd</tt> voi asettaa työpöydälle salasanan, jota kysytään yhteyttä muodostettaessa (tämä on siis eri salasana kuin varsinainen käyttäjän salasana).
Etäkäyttäjän VNC-istunnossa käynnistettäviä ohjelmia voidaan muokauttaa muokkaamalla skriptiä <tt>.vnc/xstartup</tt>. Tämän tiedoston tyypillinen sisältö on
#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &
Mikä käynnistää [[Xterm]]-[[terminaaliemulaattori]]n sekä yksinkertaisen [[TWM]]-ikkunointiohjelman. [[KDE]]:n käynnistystä varten tiedosto pitäisi muokata muotoon
#!/bin/sh
exec startkde
ja GNOME:n käynnistystä varten muotoon
#!/bin/sh
exec gnome-session
Mallia tähän voi ottaa [[xinitrc|.xinitrc]]-tiedostosta.


Jätä tämä SSH-tunneli auki taustalle ja käynnistä yhteyttä ottavalla koneella <tt>vncviewer</tt> komennolla
Kun <tt>vncserver</tt> on käynnistetty, jätä SSH-tunneli auki taustalle ja käynnistä paikallisella koneella VNC-asiakasohjelma komennolla
  vcnviewer localhost:5903
  vcnviewer localhost:5903
Jolloin <tt>vncviewer</tt kysyy aikaisemmin asettua työpöydän salasanaa.
VNC-asiakasohjelma kysyy tällöin etäkoneella asettua VNC-salasanaa.


vncserverin voi periaatteessa jättää koneelle pyörimään, mutta se syö resursseja turhaan joten jos sille ei ole enää tarvetta, se voidaan sulkea komennolla
Kun lopetat VNC-käytön, voit periaatteessa jättää <tt>vncserver</tt>-ohjelman pyörimään etäkoneelle. Yleensä tämä kuitenkin vain kuluttaa turhaan koneen resursseja, joten voit sulkea palvelimen komennolla
  vncserver -kill :4
  vncserver -kill :4
jossa tuo :4 on käyttämäsi näytön numero (huomaa välilyönti ennen tuota kaksoispistettä!).
olettaen, että 4 oli käyttämäsi työpöytänumero. SSH-tunnelin ja -etäistunnon voi sulkea komennolla
exit


Yhteys katkeaa kun lopetat ssh-yhteyden (kirjoittamalla <tt>[[exit]]</tt>).
===Yhdistäminen olemassaolevaan X-istuntoon===
Paikalliselta koneelta on ensin ylläolevaan tapaan luotava SSH-tunneli etäkoneelle komennolla
ssh kayttajanimi@palvelin -L 5903:localhost:5904
Missä <tt>5903</tt> on paikallisen koneen ja <tt>5904</tt> etäkoneen portti. Pakkausta käyttävä SSH-tunneli voidaan luoda komennolla
ssh kayttajanimi@palvelin -CL 5903:localhost:5904


== Yhteys koneelle, johon olet kirjautuneena ==
Etäkoneelta on löydyttävä [[x11vnc]]-palvelinohjelmisto. Sen pitäisi löytyä paketinhallinnasta nimellä <tt>x11vnc</tt>.
Tässä tapauksessa koneella, johon otetaan yhteys, on oltava asennettuna lisäksi <tt>x11vnc</tt>, joka löyty yleensä paketinhallinnasta samannimisestä paketista.


Aluksi muodostetaan SSH:lla yhteys koneeseen johon halutaan ottaa graafinen yhteys ja luodaan SSH-tunneli samaan tapaan kuin edellä komennolla  
X11vnc-palvelin käynnistetään komennolla
  ssh kayttajanimi@palvelin -L 5903:localhost:5900
  x11vnc -usepw
missä 5903 on portti koneessa, josta otat yhteyttä ja 5904 on portti koneessa, johon olet ottamassa yhteyttä ja jota palvein asetetaan kuuntelemaan.
Missä valitsin <tt>-usepw</tt> pakottaa käyttämään yhteydelle salasanaa. Jos tiedostosta <tt>.vnc/passwd</tt> jo löytyy valmis salasana, käytetään sitä. Muussa tapauksessa käyttäjää pyydetään määrittelemään salasana ja tallennetaan se sitten em. tiedostoon. Salasanan vaihtoon voi käyttää TightVNC:n ja RealVNC:n mukana tulevaa <tt>vncpasswd</tt>-ohjelmaa. Muussa tapauksessa asia onnistuu seuraavalla komennolla:
x11vnc -storepasswd 'salasana' $HOME/.vnc/passwd


Seuraavaksi käynnistetään vnc-palvelin komennolla
Mikäli etäkoneella on ajossa useita eri työpöytäistuntoja, voidaan x11vnc määrittää käyttämään tiettyä istuntoa valitsimella <tt>-display</tt>, esimerkiksi
x11vnc -usepw -display :0
X11vnc tukee myös huomattavaa määrää muita valitsimia, joista saa lisätietoa ohjelman [http://www.karlrunge.com/x11vnc/ kotisivuilta] tai komennolla <tt>man x11vnc</tt>.
 
Kun olet saanut x11vnc-palvelimen käynnistettyä, voit jättää SSH-tunnelin auki taustalle ja käynnistää paikallisella koneella VNC-asiakasohjelman komennolla
vcnviewer localhost:5903
VNC-asiakasohjelma kysyy tällöin etäkoneella asettua VNC-salasanaa.
 
Kun suljet käynnistämäsi <tt>vncviewer</tt>-istunnon, sulkeutuu myös x11vnc-palvelin automaattisesti. Tällöin voit palata SSH-tunnelin komentoriville ja sulkea sen komennolla
exit
Jos haluat estää x11vnc:n automaattisen sulkeutumisen, voit käynnistää sen valitsimella <tt>-forever</tt>:
x11vnc -usepw -forever
X11vnc-palvelimen voi tällöin sulkea komennolla
[[killall]] x11vnc
 
'''Huom!''' Katso myös [[SSH#K.C3.A4ytt.C3.B6esimerkki:_graafinen_VNC-yhteys_kahden_palomuurin_takana_olevan_koneen_v.C3.A4lille|SSH-käyttöesimerkki: Graafinen VNC-yhteys kahden palomuurin takana olevan koneen välille]]
 
====Yhdistäminen ilman SSH-salausta====
Kotiverkkokäytössä saattaa olla turhaa käyttää SSH-tunnelia x11vnc-yhteyttä luodessa. Tällöin voit yksinkertaisesti käynnistää x11vnc-palvelimen etäkoneen komentoriviltä komennolla
  x11vnc -usepw
  x11vnc -usepw
Parametri <tt>-usepw</tt> ensimmäisellä kerralla kysyy käytettävää salasanaa (jos koneeseen on jo asetettu vnc-salasana, käyttää sitä), jatkossa käyttää asetettua.
sekä antaa paikallisella koneella komennon
vncviewer etakoneen_nimi:0
missä <tt>:0</tt> on etäkoneella käytettävä työpöytänumero. Jos etäkoneella on vain yksi X-istunto, on työpöydän numero todennäköisesti <tt>0</tt>.


Jätä tämä ssh - tunneli taustalle auki oleskelemaan ja käynnistä yhteyttä ottavalla koneella vncviewer esim. uuteen terminaali-ikkunaan.
====Yhdistäminen graafisia työkaluja käyttäen====
Yhdistäminen näillä työkaluilla tapahtuu ilman erillisen salauksen (kuten SSH-tunneli) käyttöä, joten ne soveltuvat enimmäkseen vain turvallisissa verkoissa käytettäväksi.


{{{
=====GNOME=====
vcnviewer localhost:5903
[[GNOME]]en kuuluu [[vino]]-niminen VNC-palvelin, jonka asetuksia voi muuttaa valikosta ''Järjestelmä'' --> ''Asetukset'' --> ''Etätyöpöytä''.
}}}


Viewer kysyy aikaisemmin asettamaa työpöydän salasanaa.
Asetusruudussa voit valita, haluatko muiden käyttäjien voivan etäkäyttää tai vain etäkatsella työpöytääsi. Voit myös valita, haluatko saada uusista VNC-istunnoista varmistuksen sekä määrittää yhteydelle salasanan. Salasanan maksimipituus on joissakin VNC-ohjelmissa esiintyvän rajoituksen vuoksi 8 merkkiä. VNC-palvelimen päälläolo ei edellytä asetusikkunan aukioloa.


vncserverin voi periaatteessa kait jättää koneelle pyörimään - syö tosin resursseja joten jos tarvetta ei heti ole uudestaan, saa serverin pysäytettyä painamalla ctrl + C jolloin keskeyttää ohjelman ajon.
=====KDE=====
[[KDE]]:hen kuuluu [[Krfb]]-niminen VNC-palvelin. Sen voi käynnistää ''Internet''-valikon alta kohdasta ''Työpöydän jakaminen''. Ohjelma sallii yhteyskohtaisten kutsujen luomisen, joille generoidaan valmiiksi salasana sekä asetetaan tunnin voimassaoloaika. Palvelimen voi myös määrittää ottamaan jatkuvasti yhteyksiä vastaan. Yhteyden vastaanottaminen ei edellytä Krfb:n asetusikkunan aukioloa. Kun uusi yhteyspyyntö tulee, näytetään oletuksena varmistuskysely. Tämän jälkeen tarjottimelle ilmestyy Krfb:n kuvake, josta voi hallita yhteyttä.


Yhteys katkeaa (myös) kun lopetat ssh-yhteyden (kirjoittamalla exit).
KDE:hen kuuluu myös VNC- ja RDP-asiakasohjelma nimeltä [[KRDC]]. Se löytyy ''Internet''-valikon kohdasta ''Etätyöpöytäyhteys''. Sille syötetään halutun palvelimen osoite muodossa <tt>palvelimennimi:työpöytänumero</tt>, esimerkiksi <tt>foobar:0</tt>. Tämän jälkeen tulee ikkuna, jossa kysytään yhteyden nopeutta sekä halua salasanan tallentamiseen [[Kwallet]]-työkalun avulla. Tämän jälkeen näytetään ''Todennetaan''-ikkunaa, kunnes etäkoneen käyttäjä on hyväksynyt yhteyden. Sitten kysytään salasanaa ja VNC-ikkuna aukeaa. Yhteysikkunassa voi valita mm. kokoruututilan, zoomauksen sekä erikoisnäppäinten syötön. Huomioi, että KDE:n uudessa 4.0-versiossa KRDC on uudistettu lähes kokonaan, joten tämä ohje ei välttämättä enää päde siihen.


====Yhdistäminen Windowsista Linuxin olemassaolevaan X-istuntoon ====
Tämä ohje on pitkälti sama kuin ylläoleva kappale [[VNC#Yhdist.C3.A4minen_olemassaolevaan_X-istuntoon|Yhdistäminen olemassaolevaan X-istuntoon]] mutta tässä ohjeessa asiakaskoneen käyttöjärjestelmänä on Windows.


Tämä ohje on "[http://fi.wikipedia.org/wiki/Public_domain public domain]".
Lataa Windows-koneelle tarvittavat ohjelmat: [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY] salattua yhteyttä varten ja [http://www.realvnc.com/cgi-bin/download.cgi realvnc-client] (VNC Free Edition Viewer for Windows Stand-alone Viewer) etäkäyttöä varten.
Kumpaakaan ohjelmaa ei tarvitse asentaa, vaan ne käynnistetään suoraan ladatuista .exe-tiedostoista.


Asenna Linuxiin paketit <tt>openssh</tt> tai <tt>openssh-server</tt> (jakelusta riippuen) sekä <tt>x11vnc</tt>.


=== Jos X-istunto ei ole käynnissä ===
Tarkasta Linux-koneen ip-osoite komennolla <tt>ifconfig</tt>, esimerkiksi
tunnus@kone:~$ ifconfig
eth0    Link encap:Ethernet  HWaddr 00:13:8f:d7:cd:98
          inet addr:192.168.0.22  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2212 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2061 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:429344 (419.2 KB)  TX bytes:2050343 (1.9 MB)
          Interrupt:16 Base address:0xe000


Ohje graafisille työkaluille [http://forum.ubuntu-fi.org/index.php?topic=2744.0 forumilla]
Tässä ip-osoite olisi 192.168.0.22.


Avaa Windows-koneella äsken ladattu PuTTY ja kirjoita Linux-koneen IP-osoite host-riville. Kirjoita
''Connection'' -> ''SSH'' -> ''Tunnel'' -valikon ''Add New Forward'' -kohdan ''Source port'' -kohtaan <tt>5903</tt> ja ''destination''-kohtaan <tt>localhost:5900</tt>. Valitse tämän jälkeen ''ADD''.
Paina ''Open'', jolloin yhteys avataan ja sinulta kysytään kirjautumistunnuksia. Kirjoita Linux-koneen käyttäjätunnuksesi ja salasanasi.


== VNC-palvelimen käynnistäminen kohdekoneessa graafisesti ==
Nyt komenna PuTTYssä
 
x11vnc -usepw


Ubuntuun on nykyisin asennettu valmiiksi VNC-yhteys, jota pystyy hallinnoimaan graafisesti
käynnistääksesi vnc-palvelimen. Valitsin <tt>-usepw</tt> ensimmäisellä kerralla kysyy käytettävää salasanaa. Jos koneeseen on jo asetettu vnc-salasana, ohjelma käyttää sitä.


''Järjestelmä'' > ''Asetukset'' > ''Etätyöpöytä''
Käynnistä nyt Windowsissa lataamasi RealVNC. Kirjoita osoitteeksi <tt>localhost:5903</tt> ja paina OK, jolloin yhteys aukeaa.


Yhteyden saat katkaistua sulkemalla PuTTYn ja RealVNC:n.


== Uusi tapa käyttää SSH-yhteyttä ==
==Katso myös==
*[[SSH#K.C3.A4ytt.C3.B6esimerkki:_graafinen_VNC-yhteys_kahden_palomuurin_takana_olevan_koneen_v.C3.A4lille|SSH-käyttöesimerkki: Graafinen VNC-yhteys kahden palomuurin takana olevan koneen välille]]
*[[XDMCP]]
*[[SSH]]
*[[X Window System]]


Ubuntun mukana tuleva VNC-ohjelma sisältää nykyisin option ''-via'', joka avaa ssh-yhteyden kohdekoneeseen automaattisesti. Näin ollen yhteys saadaan yksinkertaisesti seuraavalla tavalla:
==Aiheesta muualla==
*[[wikipedia:en:VNC|Englanninkielisen Wikipedian VNC-artikkeli]]
*[http://www.realvnc.com/products/personal/ Realvnc]
*[http://www.tightvnc.com/ TightVNC]
*[http://www.karlrunge.com/x11vnc/ x11vnc]


{{{
{{Malline:Etätyöpöytäsovellukset}}
vncviewer -via kayttajanimi@serverinosoite localhost:0
[[Luokka:Etäkäyttö]]
}}}
[[Luokka:Ohjeet]]

Nykyinen versio 16. huhtikuuta 2015 kello 15.01

Linux.fi-wikissä artikkelit käsittelevät yleensä aihettaan siltä osin, kuin se koskee Linuxia ja avoimia/vapaita ohjelmistoja. Yleisluontoisemman artikkelin tästä aiheesta löydät tietosanakirja Wikipediasta.

VNC (Virtual Network Computing) on protokolla tietokoneen graafiseen etäkäyttöön tai pelkkään etäkatseluun. VNC-protokolla on avoin ja alustariippumaton ja sitä tukevia palvelin- ja asiakasohjelmistoja löytyy kaikille yleisimmille käyttöjärjestelmille.

VNC-yhteys ei ota mitään kantaa ruudulla näkyvien käyttöliittymäelementtien muodostumistapaan, vaan kuvansiirto tapahtuu pikseli kerrallaan (RFB-protokolla). Tämä mahdollistaa käyttöjärjestelmäriippumattomuuden sekä asiakasohjelman yksinkertaisuuden. VNC on toisaalta tästä syystä usein hitaampi verrattuna X Window Systemin sisäänrakennettuun etäkäyttömahdollisuuteen (jota käytetään esimerkiksi SSH-yhteyden yli tai graafisten kirjautumisohjelmien XDMCP-toiminnon kautta), missä verkon yli lähetetään samankaltaiset ohjaussignaalit kuin paikallisessakin käytössä.

Alkuperäinen, vuonna 1995 kehitetty VNC-ohjelmisto julkaistiin GPL-lisenssin alaisuudessa, mikä on mahdollistanut lukuisten haarautettujen VNC-versioiden synnyn. Eri VNC-versiot ovat yhteensopivia toistensa kanssa, vaikka useimmista versioista löytyykin omia parannuksiaan. Tunnetuimpia versioita ovat:

  • RealVNC - VNC:n alkuperäisten kehittäjien ylläpitämä palvelin- ja asiakasohjelmisto, josta on saatavilla myös kaupallinen versio. RealVNC:n ilmainen, GPL-lisensoitu versio on saatavilla Linuxille, muille Unix-johdannaisille sekä Windowsille. RealVNC-asiakasohjelma löytyy useimpien Linux-jakeluiden paketinhallinnasta nimellä vnc tai vncviewer.
  • TightVNC [1] - Linuxille ja Windowsille saatavilla oleva, GPL-lisensoitu asiakas- ja palvelinohjelma. Sisältää oman edistyneemmän pakkausmetodinsa, joka mahdollistaa nopeammat yhteydet. Löytyy useimmista jakeluista nimellä tightvnc.
  • TigerVNC - haarautettu versio RealVNC:stä, jonka vapaan version kehitys on viime vuosina ollut pysähdyksissä. Sisältää mm. edistyneemmän pakkausmenetelmän, käännökset eri kielille, IPv6-tuen sekä automaattisen ssh-tunneloinnin Unix/Linux-koneilla (mikäli sekä asiakas että palvelin käyttävät TigerVNC:tä). Löytyy yleensä tigervnc- ja tigervnc-server-nimisistä paketeista.
  • UltraVNC - GPL-lisensoitu asiakas- ja palvelinohjelmisto paremmalla salauksella ym. lisäominaisuuksilla. Vain Windowsille.
  • Xvnc - mm. RealVNC:n ja TightVNC:n mukana tuleva palvelinohjelmisto ja "virtuaalinen" X-palvelin, joka luo VNC-asiakasohjelmien käyttöön palvelinkoneen fyysisestä näyttölaitteesta riippumattoman X-istunnon. Xvnc löytyy useimmista jakeluista nimellä vnc-server, xorg-X11-Xvnc tai X11-server-xvnc. Xvnc käynnistyy helpoiten vncserver-skriptin avulla.
  • x11vnc - Jo olemassaolevaa, fyysiseen näyttöön liitettyä X-palvelinta hyödyntävä VNC-palvelin. Löytyy useimmissa jakeluissa paketista x11vnc.
  • vino - graafisesti hallittava VNC-palvelin GNOMElle.
  • KRDC - KDE:n VNC- ja RDP-asiakasohjelma. Uudelleenkirjoitettu lähes kokonaan KDE:n 4.0-versiota varten.
  • Krfb - KDE:n graafinen VNC-palvelin. Tukee mm. sähköpostitse lähetettäviä kutsuja etäyhteyteen.
  • Vinagre - Asiakasohjelma VNC:n ja SSH etätyöpöydän käyttöön.

Käyttö[muokkaa]

Useimmista muista etäkirjautumisprotokollista poiketen VNC vaatii, että käyttäjän, jonka istuntoa halutaan etäkäyttää, on jo oltava etäkoneella kirjautuneena ja myöskin käynnistänyt VNC-palvelinohjelman omilla oikeuksillaan (on tosin teoriassa mahdollista käynnistää VNC-palvelin nohup-ohjelman avulla ja sen jälkeen kirjautua ulos).

Koska Linux on monen käyttäjän käyttöjärjestelmä, voidaan VNC-asiakkaille avata joko kokonaan oma X-istunto omine ohjelmineen tai sitten antaa heidän etäkäyttää tai -katsella valmista istuntoa, jolloin samaa istuntoa käyttää useampi käyttäjä. Yhden käyttäjän käyttöjärjestelmissä (esimerkiksi Windows) on mahdollista vain olemassaolevan istunnon yhteiskäyttö. Erillisten X-istuntojen luominen toteutetaan käyttämällä Xvnc-palvelinta, jolloin X-istunto ei ole yhteydessä fyysiseen näyttölaitteeseen. Saman istunnon yhteiskäyttöön taas käytetään x11vnc-palvelinta, jolloin paikallinen käyttäjä ja etäkäyttäjä jakavat samat ikkunat, hiiren kursorin ym.

VNC:n oletuksena käyttämä salaus on heikko ja mm. salasana on helppo murtaa. Poikkeuksena tästä ovat RealVNC:n kaupallinen versio sekä UltraVNC (vain Windows), joihin on lisätty tuki tehokkaammalle salaukselle. Jos VNC-yhteyttä halutaan käyttää muualla kuin turvallisessa kotiverkossa, on tehokkaampi salaus käytännössä välttämätön. VNC:n ei-kaupallisilla Linux-toteutuksilla ylimääräinen salaus onnistuu helpoiten välittämällä VNC-liikenne SSH-tunnelin kautta. Tällä menetelmällä voidaan myös kiertää mahdolliset palomuuriasetukset, joissa VNC:n oletuksena käyttämät portit 5900-5906 on suljettu, mutta SSH:n 22-portti sallittu. Tässä ohjeessa neuvotaan VNC-yhteyden muodostaminen SSH-tunnelin kautta.

Jotta tämä voisi toimia, täytyy paikalliselta koneelta löytyä SSH-asiakasohjelma ja etäkoneelta ajossa oleva SSH-palvelin (sshd). Molemmat löytyvät yleensä paketista openssh, tosin joissakin jakeluissa SSH-asiakasohjelmat on eriytetty pakettiin openssh-clients ja sshd pakettiin openssh-server. Lisätietoja SSH-palvelimen pystyttämisestä löytyy artikkelista SSH.

Ennen yhteyden luomista on paikallisella koneella luonnollisesti oltava myös jokin VNC-asiakasohjelma. Hyvä valinta on esimerkiksi TightVNC, joka käyttää RealVNC:tä tehokkaampaa pakkausta. TightVNC löytyy useimmissa jakeluissa paketista tightvnc.

Yhdistäminen erilliseen X-istuntoon[muokkaa]

Luodaan SSH-tunneli (valitsin -L) etäkoneeseen palvelin:

ssh kayttajanimi@palvelin -L 5903:palvelin:5904

5903 on portti paikallisessa koneessa ja 5904 on portti etäkoneessa, johon ollaan ottamassa yhteyttä. Voit myös käyttää valitsinta -C, joka aiheuttaa yhteyden pakkaamisen kompensoiden VNC:n puutteellisia pakkaustoimintoja. Toisaalta tämä saattaa jossain määrin lisätä yhteyden viivettä. Pakkauksella varustettu tunneli avattaisiin näin:

 ssh kayttajanimi@palvelin -CL 5903:palvelin:5904

Etäkoneella on nyt käynnistettävä VNC-palvelin. Tämä edellyttää saman tightvnc-paketin asentamista kuin paikallisellakin koneella. Palvelin käynnistetään komennolla

vncserver :4

jossa :4 tarkoittaa työpöydän numeroa (tämä määrittää myös kuunneltavaksi porttiosoitteeksi 5904:n). Halutessa voidaan määrittää myös näytön resoluutio (valitsin -geometry) sekä värimäärä (-depth), esimerkiksi

vncserver -geometry 1024x768 -depth 16 :4

Ensimmäisellä kerralla kun palvelin käynnistetään, kysytään myös yhteydelle asetettavaa salasanaa (tämä on siis eri salasana kuin varsinainen käyttäjän salasana). Salasana tallentuu tiedostoon .vnc/passwd. Sitä voi vaihtaa komennolla vncpasswd.

Etäkäyttäjän VNC-istunnossa käynnistettäviä ohjelmia voidaan muokauttaa muokkaamalla skriptiä .vnc/xstartup. Tämän tiedoston tyypillinen sisältö on

#!/bin/sh

xrdb $HOME/.Xresources
xsetroot -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &

Mikä käynnistää Xterm-terminaaliemulaattorin sekä yksinkertaisen TWM-ikkunointiohjelman. KDE:n käynnistystä varten tiedosto pitäisi muokata muotoon

#!/bin/sh

exec startkde

ja GNOME:n käynnistystä varten muotoon

#!/bin/sh

exec gnome-session

Mallia tähän voi ottaa .xinitrc-tiedostosta.

Kun vncserver on käynnistetty, jätä SSH-tunneli auki taustalle ja käynnistä paikallisella koneella VNC-asiakasohjelma komennolla

vcnviewer localhost:5903

VNC-asiakasohjelma kysyy tällöin etäkoneella asettua VNC-salasanaa.

Kun lopetat VNC-käytön, voit periaatteessa jättää vncserver-ohjelman pyörimään etäkoneelle. Yleensä tämä kuitenkin vain kuluttaa turhaan koneen resursseja, joten voit sulkea palvelimen komennolla

vncserver -kill :4

olettaen, että 4 oli käyttämäsi työpöytänumero. SSH-tunnelin ja -etäistunnon voi sulkea komennolla

exit

Yhdistäminen olemassaolevaan X-istuntoon[muokkaa]

Paikalliselta koneelta on ensin ylläolevaan tapaan luotava SSH-tunneli etäkoneelle komennolla

ssh kayttajanimi@palvelin -L 5903:localhost:5904

Missä 5903 on paikallisen koneen ja 5904 etäkoneen portti. Pakkausta käyttävä SSH-tunneli voidaan luoda komennolla

ssh kayttajanimi@palvelin -CL 5903:localhost:5904

Etäkoneelta on löydyttävä x11vnc-palvelinohjelmisto. Sen pitäisi löytyä paketinhallinnasta nimellä x11vnc.

X11vnc-palvelin käynnistetään komennolla

x11vnc -usepw

Missä valitsin -usepw pakottaa käyttämään yhteydelle salasanaa. Jos tiedostosta .vnc/passwd jo löytyy valmis salasana, käytetään sitä. Muussa tapauksessa käyttäjää pyydetään määrittelemään salasana ja tallennetaan se sitten em. tiedostoon. Salasanan vaihtoon voi käyttää TightVNC:n ja RealVNC:n mukana tulevaa vncpasswd-ohjelmaa. Muussa tapauksessa asia onnistuu seuraavalla komennolla:

x11vnc -storepasswd 'salasana' $HOME/.vnc/passwd

Mikäli etäkoneella on ajossa useita eri työpöytäistuntoja, voidaan x11vnc määrittää käyttämään tiettyä istuntoa valitsimella -display, esimerkiksi

x11vnc -usepw -display :0

X11vnc tukee myös huomattavaa määrää muita valitsimia, joista saa lisätietoa ohjelman kotisivuilta tai komennolla man x11vnc.

Kun olet saanut x11vnc-palvelimen käynnistettyä, voit jättää SSH-tunnelin auki taustalle ja käynnistää paikallisella koneella VNC-asiakasohjelman komennolla

vcnviewer localhost:5903

VNC-asiakasohjelma kysyy tällöin etäkoneella asettua VNC-salasanaa.

Kun suljet käynnistämäsi vncviewer-istunnon, sulkeutuu myös x11vnc-palvelin automaattisesti. Tällöin voit palata SSH-tunnelin komentoriville ja sulkea sen komennolla

exit

Jos haluat estää x11vnc:n automaattisen sulkeutumisen, voit käynnistää sen valitsimella -forever:

x11vnc -usepw -forever

X11vnc-palvelimen voi tällöin sulkea komennolla

killall x11vnc

Huom! Katso myös SSH-käyttöesimerkki: Graafinen VNC-yhteys kahden palomuurin takana olevan koneen välille

Yhdistäminen ilman SSH-salausta[muokkaa]

Kotiverkkokäytössä saattaa olla turhaa käyttää SSH-tunnelia x11vnc-yhteyttä luodessa. Tällöin voit yksinkertaisesti käynnistää x11vnc-palvelimen etäkoneen komentoriviltä komennolla

x11vnc -usepw

sekä antaa paikallisella koneella komennon

vncviewer etakoneen_nimi:0

missä :0 on etäkoneella käytettävä työpöytänumero. Jos etäkoneella on vain yksi X-istunto, on työpöydän numero todennäköisesti 0.

Yhdistäminen graafisia työkaluja käyttäen[muokkaa]

Yhdistäminen näillä työkaluilla tapahtuu ilman erillisen salauksen (kuten SSH-tunneli) käyttöä, joten ne soveltuvat enimmäkseen vain turvallisissa verkoissa käytettäväksi.

GNOME[muokkaa]

GNOMEen kuuluu vino-niminen VNC-palvelin, jonka asetuksia voi muuttaa valikosta Järjestelmä --> Asetukset --> Etätyöpöytä.

Asetusruudussa voit valita, haluatko muiden käyttäjien voivan etäkäyttää tai vain etäkatsella työpöytääsi. Voit myös valita, haluatko saada uusista VNC-istunnoista varmistuksen sekä määrittää yhteydelle salasanan. Salasanan maksimipituus on joissakin VNC-ohjelmissa esiintyvän rajoituksen vuoksi 8 merkkiä. VNC-palvelimen päälläolo ei edellytä asetusikkunan aukioloa.

KDE[muokkaa]

KDE:hen kuuluu Krfb-niminen VNC-palvelin. Sen voi käynnistää Internet-valikon alta kohdasta Työpöydän jakaminen. Ohjelma sallii yhteyskohtaisten kutsujen luomisen, joille generoidaan valmiiksi salasana sekä asetetaan tunnin voimassaoloaika. Palvelimen voi myös määrittää ottamaan jatkuvasti yhteyksiä vastaan. Yhteyden vastaanottaminen ei edellytä Krfb:n asetusikkunan aukioloa. Kun uusi yhteyspyyntö tulee, näytetään oletuksena varmistuskysely. Tämän jälkeen tarjottimelle ilmestyy Krfb:n kuvake, josta voi hallita yhteyttä.

KDE:hen kuuluu myös VNC- ja RDP-asiakasohjelma nimeltä KRDC. Se löytyy Internet-valikon kohdasta Etätyöpöytäyhteys. Sille syötetään halutun palvelimen osoite muodossa palvelimennimi:työpöytänumero, esimerkiksi foobar:0. Tämän jälkeen tulee ikkuna, jossa kysytään yhteyden nopeutta sekä halua salasanan tallentamiseen Kwallet-työkalun avulla. Tämän jälkeen näytetään Todennetaan-ikkunaa, kunnes etäkoneen käyttäjä on hyväksynyt yhteyden. Sitten kysytään salasanaa ja VNC-ikkuna aukeaa. Yhteysikkunassa voi valita mm. kokoruututilan, zoomauksen sekä erikoisnäppäinten syötön. Huomioi, että KDE:n uudessa 4.0-versiossa KRDC on uudistettu lähes kokonaan, joten tämä ohje ei välttämättä enää päde siihen.

Yhdistäminen Windowsista Linuxin olemassaolevaan X-istuntoon[muokkaa]

Tämä ohje on pitkälti sama kuin ylläoleva kappale Yhdistäminen olemassaolevaan X-istuntoon mutta tässä ohjeessa asiakaskoneen käyttöjärjestelmänä on Windows.

Lataa Windows-koneelle tarvittavat ohjelmat: PuTTY salattua yhteyttä varten ja realvnc-client (VNC Free Edition Viewer for Windows Stand-alone Viewer) etäkäyttöä varten. Kumpaakaan ohjelmaa ei tarvitse asentaa, vaan ne käynnistetään suoraan ladatuista .exe-tiedostoista.

Asenna Linuxiin paketit openssh tai openssh-server (jakelusta riippuen) sekä x11vnc.

Tarkasta Linux-koneen ip-osoite komennolla ifconfig, esimerkiksi

tunnus@kone:~$ ifconfig
eth0     Link encap:Ethernet  HWaddr 00:13:8f:d7:cd:98
         inet addr:192.168.0.22  Bcast:192.168.0.255  Mask:255.255.255.0
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:2212 errors:0 dropped:0 overruns:0 frame:0
         TX packets:2061 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:429344 (419.2 KB)  TX bytes:2050343 (1.9 MB)
         Interrupt:16 Base address:0xe000

Tässä ip-osoite olisi 192.168.0.22.

Avaa Windows-koneella äsken ladattu PuTTY ja kirjoita Linux-koneen IP-osoite host-riville. Kirjoita Connection -> SSH -> Tunnel -valikon Add New Forward -kohdan Source port -kohtaan 5903 ja destination-kohtaan localhost:5900. Valitse tämän jälkeen ADD. Paina Open, jolloin yhteys avataan ja sinulta kysytään kirjautumistunnuksia. Kirjoita Linux-koneen käyttäjätunnuksesi ja salasanasi.

Nyt komenna PuTTYssä

x11vnc -usepw

käynnistääksesi vnc-palvelimen. Valitsin -usepw ensimmäisellä kerralla kysyy käytettävää salasanaa. Jos koneeseen on jo asetettu vnc-salasana, ohjelma käyttää sitä.

Käynnistä nyt Windowsissa lataamasi RealVNC. Kirjoita osoitteeksi localhost:5903 ja paina OK, jolloin yhteys aukeaa.

Yhteyden saat katkaistua sulkemalla PuTTYn ja RealVNC:n.

Katso myös[muokkaa]

Aiheesta muualla[muokkaa]

v  k  m
Etätyöpöytäsovellukset
Remmina | Vinagre | rdesktop | Tsclient | Xnest | VNC