- Esittely
- Tavoitteet
- Edellytykset
- Vaihe 1 – Kahden käyttäjätilin luominen
- Vaihe 2 – GNOME-työpöydän asentaminen
- Vianmääritys – Palvelin jumissa käynnistysvaiheessa
- Vaihe 3 – TigerVNC-palvelimen asentaminen
- Vaihe 4 – VNC-palvelun määrittäminen kahdelle asiakkaalle
- Vaihe 5 – Palomuurin määrittäminen
- Vaihe 6 – VNC-salasanojen asettaminen
- Vaihe 7 – Yhteyden muodostaminen etätyöpöytiin VNC-asiakasohjelmalla
- Vianmääritys – VNC-palvelun kaatuminen
- Yleistä vianmäärityksestä
- Vaihe 8 – VNC-istuntojen suojaaminen SSH-tunneloinnilla
- Johtopäätös
Esittely
VNC eli Virtual Network Computing on alustariippumaton protokolla, jonka avulla käyttäjät voivat muodostaa yhteyden etäkäytössä olevaan tietokonejärjestelmään ja käyttää sen resursseja graafisesta käyttöliittymästä (GUI) käsin.
Se on ikään kuin sovelluksen kauko-ohjaus: asiakastietokoneen näppäimistön painallukset tai hiiren napsauttamiset siirretään verkon kautta etäkäytössä olevaan tietokoneeseen. VNC mahdollistaa myös leikepöydän jakamisen molempien tietokoneiden välillä. Jos tulet Microsoft Windows -palvelintaustasta, VNC muistuttaa paljon Remote Desktop Service -palvelua, paitsi että se on saatavilla myös OS X:lle, Linuxille ja muille käyttöjärjestelmille.
Kuten kaikki muukin verkkomaailmassa, VNC perustuu asiakaspalvelinmalliin: VNC-palvelin toimii etätietokoneessa – Droplet-tietokoneessasi – joka palvelee saapuvia asiakaspyyntöjä.
Tavoitteet
Tässä opetusohjelmassa opimme asentamaan ja konfiguroimaan VNC-palvelimen CentOS 7 -käyttöjärjestelmään. Asennamme TigerVNC-palvelimen, joka on vapaasti saatavilla TigerVNC:n GitHub-arkistosta.
Näyttääksemme, miten VNC toimii, asennamme myös GNOME-työpöydän CentOS-palvelimelle. Luomme kaksi käyttäjätiliä ja määrittelemme niille VNC-yhteyden. Sen jälkeen testaamme niiden yhteyden etätyöpöydälle ja lopuksi opettelemme suojaamaan etäyhteyden SSH-tunnelin avulla.
Edellytykset
Tässä opetusohjelmassa esitetyt komennot, paketit ja tiedostot testattiin CentOS 7:n minimiasennuksessa. Suosittelemme seuraavia:
- Distro: CentOS 7, 64-bittinen
- Resurssivaatimukset: Droplet, jossa on 2 Gt RAM-muistia
- Tämän ohjeen seuraamiseksi sinun tulisi käyttää sudo-käyttäjää. Ymmärtääksesi, miten sudo-oikeudet toimivat, voit tutustua tähän DigitalOceanin opetusohjelmaan
Varoitus: Sinun ei pidä suorittaa mitään tämän opetusohjelman komentoja, kyselyitä tai määrityksiä tuotantoon tarkoitetulla Linux-palvelimella. Tämä voi johtaa tietoturvaongelmiin ja käyttökatkoksiin.
Vaihe 1 – Kahden käyttäjätilin luominen
Aluksi luomme kaksi käyttäjätiliä. Nämä tilit muodostavat etäyhteyden CentOS 7 -palvelimeemme VNC-asiakkaista.
- joevnc
- janevnc
Seuraavalla komennolla lisäämme käyttäjätilin joevnc:lle:
sudo useradd -c "User Joe Configured for VNC Access" joevnc
Sitten suoritamme komennon passwd vaihtaaksemme joevncin salasanan:
sudo passwd joevnc
Tulosteessa pyydetään meiltä uusi salasana. Kun se on annettu, tili on valmis kirjautumista varten:
Changing password for user joevnc.New password:Retype new password:passwd: all authentication tokens updated successfully.
Luo seuraavaksi tili janevnc:lle:
sudo useradd -c "User Jane Configured for VNC Access" janevnc
Aseta salasana janevnc:lle:
sudo passwd janevnc
Vaihe 2 – GNOME-työpöydän asentaminen
Nyt asennetaan GNOME-työpöytä. GNOME on yhteistyön tulos: se on kokoelma vapaita ja avoimen lähdekoodin ohjelmistoja, jotka muodostavat erittäin suositun työpöytäympäristön. On olemassa muitakin työpöytäympäristöjä, kuten KDE, mutta GNOME on suositumpi. VNC-käyttäjämme käyttävät GNOMEa vuorovaikutukseen palvelimen kanssa työpöydältä käsin:
sudo yum groupinstall -y "GNOME Desktop"
Verkkosi nopeudesta riippuen tämä voi kestää muutaman minuutin.
Kun pakettiryhmä on asennettu, käynnistä palvelin uudelleen:
sudo reboot
Vianmääritys – Palvelin jumissa käynnistysvaiheessa
Se riippuu siitä, miten palvelimesi on asetettu, kun kone käynnistyy, se voi jäädä käynnistysvaiheeseen, jossa näkyy tämän kaltainen viesti:
Initial setup of CentOS Linux 7 (core)1) License information (Licence not accepted)Please make your choice from above :
Päästääksesi tästä ohi paina näppäimistöä 1 (lue lisenssi), sitten 2 (hyväksy lisenssi) ja sitten C (jatka). Saatat joutua painamaan C:tä kaksi tai useampia kertoja. Alla olevassa kuvassa näkyy tämä:
Jos et näe tätä virhettä ja käynnistysprosessi on sujuva, sitä parempi – voit siirtyä seuraavaan vaiheeseen.
Vaihe 3 – TigerVNC-palvelimen asentaminen
TigerVNC on ohjelmisto, jonka avulla voimme muodostaa etätyöpöytäyhteyden.
Asenna Tiger VNC -palvelin:
sudo yum install -y tigervnc-server
Tällöin pitäisi näkyä seuraavan kaltainen tuloste:
Loaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile. . .Running transaction Installing : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64 1/1 Verifying : tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64 1/1Installed: tigervnc-server.x86_64 0:1.2.80-0.30.20130314svn5065.el7Complete!
Nyt meillä on VNC-palvelin ja GNOME-työpöytä asennettuna. Olemme myös luoneet kaksi käyttäjätiliä yhteyden muodostamista varten VNC:n kautta.
Vaihe 4 – VNC-palvelun määrittäminen kahdelle asiakkaalle
VNC-palvelin ei käynnisty automaattisesti, kun se asennetaan ensimmäisen kerran. Voit tarkistaa tämän suorittamalla seuraavan komennon:
sudo systemctl status vncserver@:.service
Tuloste näyttää tältä:
vncserver@:.service - Remote desktop service (VNC) Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled) Active: inactive (dead)
Voit suorittaa myös tämän komennon:
sudo systemctl is-enabled [email protected]
Tällöin pitäisi näkyä tämän kaltainen tuloste:
disabled
Miksiköhän se on poistettu käytöstä? Se johtuu siitä, että jokainen käyttäjä käynnistää erillisen instanssin VNC-palvelun daemonista. Toisin sanoen VNC ei toimi yhtenä prosessina, joka palvelee jokaista käyttäjän pyyntöä. Jokaisen käyttäjän, joka muodostaa yhteyden VNC:n kautta, on käynnistettävä uusi instanssi daemonista (tai järjestelmänvalvoja voi automatisoida tämän).
CentOS 7 käyttää systemd-daemonia muiden palvelujen käynnistämiseen. Jokaisella systemd:n alla natiivisti toimivalla palvelulla on palveluyksikkötiedosto, jonka yum-asennusohjelma sijoittaa /lib/systemd/system
-hakemistoon. Prosessit, jotka käynnistyvät automaattisesti käynnistyksen yhteydessä, saavat linkin tähän palveluyksikkötiedostoon, joka on sijoitettu /etc/systemd/system/
-hakemistoon.
Tapauksessamme yleinen palveluyksikkötiedosto luotiin /lib/systemd/system/
-hakemistoon, mutta linkkiä ei tehty /etc/systemd/system/
:n alle. Voit testata tämän suorittamalla seuraavat komennot:
sudo ls -l /lib/systemd/system/vnc*
Siitä pitäisi näkyä:
-rw-r--r--. 1 root root 1744 Jun 10 16:15 /lib/systemd/system/[email protected]
Sitten tarkista alle /etc/systemd/system/
:
sudo ls -l /etc/systemd/system/*.wants/vnc*
Tätä ei ole olemassa:
ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory
Ensimmäisenä askeleena käynnistetään kaksi uutta VNC-palvelimen instanssia kahdelle käyttäjällemme. Tätä varten meidän on tehtävä kaksi kopiota yleisestä VNC-palveluyksikkötiedostosta osoitteessa /etc/system/system
. Alla olevassa koodinpätkässä tehdään kaksi kopiota, joilla on kaksi eri nimeä:
sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:4.servicesudo cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:5.service
Miksi siis lisäsimme kaksi numeroa (kaksoispisteen ohella) kopioitujen tiedostojen nimiin?
Tämä taas palaa yksittäisten VNC-palveluiden käsitteeseen. VNC itsessään toimii portissa 5900. Koska jokainen käyttäjä käyttää omaa VNC-palvelinta, jokaisen käyttäjän on otettava yhteys erillisen portin kautta. Numeron lisääminen tiedostonimeen käskee VNC:tä käyttämään kyseistä palvelua 5900
:n aliporttina. Tapauksessamme joevnc:n VNC-palvelu toimii siis portissa 5904 (5900 + 4) ja janevnc:n palvelu portissa 5905 (5900 + 5).
Muokkaa seuraavaksi kunkin asiakkaan palveluyksikkötiedostoa. Avaa tiedosto /etc/systemd/system/vncserver@:4.service
vi-editorilla:
sudo vi /etc/systemd/system/vncserver@:4.service
Katsomalla ”Quick HowTo” -osiota voimme todeta, että olemme jo suorittaneet ensimmäisen vaiheen. Nyt meidän on käytävä läpi loput vaiheet. Kommentit kertovat myös, että VNC on epäluotettava yhteys. Puhumme tästä myöhemmin.
Muokkaa nyt tiedoston -osiota korvaamalla
<USER>
:n esiintymät joevnc
:llä. Lisää myös -geometry 1280x1024
-lauseke ExecStart
-parametrin loppuun. Tämä vain kertoo VNC:lle näytön koon, josta sen pitäisi aloittaa. Muutat yhteensä kahta riviä. Muokatun tiedoston pitäisi näyttää seuraavalta (huomaa, että koko tiedostoa ei näytetä):
# The vncserver service unit file## Quick HowTo:# 1. Copy this file to /etc/systemd/system/vncserver@:<display>.service# 2. Edit <USER> and vncserver parameters appropriately# ("runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2")# 3. Run `systemctl daemon-reload`# 4. Run `systemctl enable vncserver@:<display>.service`#. . .Description=Remote desktop service (VNC)After=syslog.target network.targetType=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'ExecStart=/sbin/runuser -l joevnc -c "/usr/bin/vncserver %i -geometry 1280x1024" PIDFile=/home/joevnc/.vnc/%H%i.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'WantedBy=multi-user.target
Tallenna tiedosto ja poistu vi:stä.
Avaa vastaavasti tiedosto /etc/systemd/system/vncserver@:5.service
vi:ssä ja tee muutokset käyttäjälle janevnc:
sudo vi /etc/systemd/system/vncserver@:5.service
Tässä on vain kohta , johon on merkitty muutokset:
Type=forking# Clean any existing files in /tmp/.X11-unix environmentExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'ExecStart=/sbin/runuser -l janevnc -c "/usr/bin/vncserver %i -geometry 1280x1024"PIDFile=/home/janevnc/.vnc/%H%i.pidExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
Seuraavaksi suorita seuraavat komennot, jotta systemd-daemon ladataan uudelleen ja jotta VNC käynnistyy kahdelle käyttäjälle käynnistyksen yhteydessä.
sudo systemctl daemon-reload
Ensimmäisen palvelininstanssin ottaminen käyttöön:
sudo systemctl enable vncserver@:4.service
Tulos:
ln -s '/etc/systemd/system/vncserver@:4.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:4.service'
Toisen palvelininstanssin ottaminen käyttöön:
sudo systemctl enable vncserver@:5.service
Tulos:
ln -s '/etc/systemd/system/vncserver@:5.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:5.service'
Nyt olet määrittänyt kaksi VNC-palvelininstanssia.
Vaihe 5 – Palomuurin määrittäminen
Seuraavaksi meidän on määritettävä palomuuri sallimaan VNC-liikenne vain porttien 5904 ja 5905 kautta. CentOS 7 käyttää dynaamista palomuuria firewalld-demonin kautta; palvelua ei tarvitse käynnistää uudelleen, jotta muutokset tulevat voimaan.
Firewalld-palvelun pitäisi käynnistyä automaattisesti järjestelmän käynnistyessä, mutta on aina hyvä tarkistaa:
sudo firewall-cmd --state
Tilan pitäisi näkyä:
running
Jos tila on jostain syystä ”ei käynnissä”, suorita seuraava komento varmistaaksesi, että se on käynnissä:
sudo systemctl start firewalld
Lisää nyt säännöt porteille 5904 ja 5905:
sudo firewall-cmd --permanent --zone=public --add-port=5904-5905/tcp
Tulos:
success
Palomuurin lataaminen:
sudo firewall-cmd --reload
Tulos:
success
Vaihe 6 – VNC-salasanojen asettaminen
Olemme askeleen päässä siitä, että näemme VNC:n toiminnassa. Tässä vaiheessa käyttäjien on asetettava VNC-salasanansa. Nämä eivät ole käyttäjien Linux-salasanoja, vaan salasanat, joilla kirjaudutaan VNC-istuntoihin.
Avaa toinen pääteyhteys CentOS 7 -palvelimeen ja kirjaudu tällä kertaa sisään nimellä joevnc.
ssh joevnc@your_server_ip
Suorita seuraava komento:
vncserver
Kuten alla olevasta tulosteesta näkyy, palvelin kysyy joevnc:ltä VNC-salasanan määrittämistä. Salasanan kirjoittamisen jälkeen ohjelma näyttää myös, että käyttäjän kotihakemistoon luodaan useita tiedostoja:
You will require a password to access your desktops.Password:Verify:xauth: file /home/joevnc/.Xauthority does not existNew 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1Creating default startup script /home/joevnc/.vnc/xstartupStarting applications specified in /home/joevnc/.vnc/xstartupLog file is /home/joevnc/.vnc/localhost.localdomain:1.log
Katsotaanpa riviä New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1
. localhost.localdomain oli esimerkissämme palvelimen nimi; sinun tapauksessasi se voi olla eri. Huomaa palvelimen nimen perässä oleva numero: (1, kaksoispisteellä erotettuna). Se ei ole numero joevnc:n palveluyksikkötiedostossa (joka oli 4). Se johtuu siitä, että tämä on näyttönumero, jolla joevnc-istunto toimii tällä palvelimella, ei itse palvelun porttinumero (5904
).
Avaa seuraavaksi uusi terminaali-istunto ja kirjaudu sisään nimellä janevnc. Käynnistä täälläkin VNC-palvelin ja aseta salasana janevnc:lle:
vncserver
Tässä pitäisi näkyä samanlainen tuloste, joka osoittaa, että janevnc-istunto toimii näytöllä 2.
Lataa lopuksi palvelut uudelleen pääteistunnosta:
sudo systemctl daemon-reloadsudo systemctl restart vncserver@:4.servicesudo systemctl restart vncserver@:5.service
Vaihe 7 – Yhteyden muodostaminen etätyöpöytiin VNC-asiakasohjelmalla
Tässä ohjeessa oletetaan, että käyttäjät joevnc ja janevnc yrittävät muodostaa yhteyden CentOS 7 -palvelimeen Windows-tietokoneistaan.
Kumpikin tarvitsee Windows-käyttöjärjestelmän VNC-asiakasohjelmiston, jotta he voivat kirjautua etätyöpöydän kautta. Tämä asiakasohjelma on aivan kuten PuTTY:n kaltainen pääteohjelma, paitsi että se näyttää graafisen tulosteen. Saatavilla on erilaisia VNC-asiakkaita, mutta käyttämämme on RealVNC, joka on saatavilla täältä. VNC Viewer for Mac OS X on ladattavissa samalta sivulta, ja Mac-versio on melko samanlainen kuin Windows-versio.
Kun VNC Viewer käynnistetään, se näyttää tällaisen valintaikkunan:
VNC Server -kenttään lisätään CentOS 7 -palvelimen IP-osoite. Määritä palvelimen IP-osoitteen jälkeen porttinumero 5904 kaksoispisteellä (:) erotettuna. Käytimme numeroa 5904, koska se on joevnc:n VNC-palvelun portti.
Olemme myös päättäneet antaa VNC Viewerin valita salausmenetelmän. Tämä vaihtoehto salaa vain verkon yli lähetetyn salasanan. Kaikki myöhempi viestintä palvelimen kanssa on salaamatonta. (Asetamme suojatun SSH-tunnelin viimeisessä vaiheessa.)
Varoitusviesti osoittaa itse asiassa juuri tämän:
Hyväksy varoitus toistaiseksi. Näyttöön tulee salasanakehote:
Syötä joevnc:n VNC-salasana, jonka asetit aiemmin.
Uusi ikkuna avautuu, jossa näkyy CentOS-etäpalvelimemme GNOME-työpöytä:
Hyväksy oletusarvoinen tervetuloviesti.
Nyt joevnc voi käynnistää graafisen työkalun, kuten GNOME-laskimen:
Voit jättää tämän työpöytäyhteyden auki.
Nyt janevnc voi myös käynnistää toisen VNC-istunnon CentOS-palvelimen kanssa. IP-osoite on sama ja portti 5905:
Kun janevnc kirjautuu sisään VNC Viewerin kautta, näytetään tyhjä työpöytä tervetuliaisviestillä, aivan kuten joevnc:lle näytettiin. Toisin sanoen nämä kaksi käyttäjää eivät jaa työpöytäinstansseja. joevnc:n työpöydällä pitäisi edelleen näkyä laskin.
Etätyöpöytäistunnon sulkemiseksi riittää pelkkä ikkunan sulkeminen. Tämä ei kuitenkaan pysäytä käyttäjän VNC-palvelua taustalla palvelimella. Jos palvelua ei pysäytetä tai käynnistetä uudelleen eikä koneella ole ollut uudelleenkäynnistyksiä, sama työpöytäistunto esitetään seuraavalla kirjautumiskerralla.
Sulje VNC Viewer -ikkunat joevnc ja janevnc. Sulje myös heidän pääteistuntonsa. Tarkista pääterminaali-ikkunasta, ovatko VNC-palvelut edelleen käynnissä:
sudo systemctl status vncserver@:4.service
Tuloste osoittaa, että etätyöpöytä on edelleen käynnissä:
vncserver@:4.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled) Active: active (running) since Sat 2014-11-01 12:06:49 EST; 58min ago Process: 2014 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS). . .
Tarkista toinen palvelu:
sudo systemctl status vncserver@:5.service
Tämäkin on käynnissä:
vncserver@:5.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:5.service; enabled) Active: active (running) since Sat 2014-11-01 12:42:56 EST; 22min ago Process: 3748 ExecStart=/sbin/runuser -l janevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=0/SUCCESS). . .
Jos haluaisit kirjautua takaisin joevnc:n työpöydälle tässä vaiheessa, näkisit auki olevan samaisen laskinsovelluksen.
Tämä asettaa mielenkiintoisia haasteita järjestelmänvalvojille. Jos sinulla on useita käyttäjiä, jotka ovat yhteydessä palvelimeen VNC:n kautta, saatat haluta keksiä jonkin tavan lopettaa heidän VNC-palvelunsa, kun niitä ei enää tarvita. Tämä voi säästää arvokkaita järjestelmäresursseja.
Vianmääritys – VNC-palvelun kaatuminen
Kun testaat ja leikit VNC:n kanssa, saatat joskus huomata, että palvelu on kaatunut eikä sitä voi enää palauttaa. Kun yrität tarkistaa tilan:
sudo systemctl status vncserver@:4.service
Tämä pitkä virheilmoitus voi tulla esiin:
vncserver@:4.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/vncserver@:4.service; enabled) Active: failed (Result: exit-code) since Fri 2014-11-07 00:02:38 EST; 2min 20s ago Process: 2221 ExecStart=/sbin/runuser -l joevnc -c /usr/bin/vncserver %i -geometry 1280x1024 (code=exited, status=2) Process: 1257 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Yritetään käynnistää palvelu ei onnistu:
sudo systemctl start vncserver@:4.service
Epäonnistunut käynnistys:
Job for vncserver@:4.service failed. See 'systemctl status vncserver@:4.service' and 'journalctl -xn' for details.
Syy on yleensä yksinkertainen. Tarkista /var/log/messages
:
sudo tail /var/log/messages
Tähän liittyvä virhe näyttää tältä:
Nov 7 00:08:36 localhost runuser: Warning: localhost.localdomain:4 is taken because of /tmp/.X11-unix/X4Nov 7 00:08:36 localhost runuser: Remove this file if there is no X server localhost.localdomain:4Nov 7 00:08:36 localhost runuser: A VNC server is already running as :4Nov 7 00:08:36 localhost systemd: vncserver@:4.service: control process exited, code=exited status=2Nov 7 00:08:36 localhost systemd: Failed to start Remote desktop service (VNC).Nov 7 00:08:36 localhost systemd: Unit vncserver@:4.service entered failed state.Nov 7 00:08:36 localhost systemd: Failed to mark scope session-c3.scope as abandoned : Stale file handle
Korjauskeino on poistaa tiedosto /tmp-kansion alta:
sudo rm -i /tmp/.X11-unix/X4
Tulos:
rm: remove socket '/tmp/.X11-unix/X4'? y
Käynnistä sitten VNC-palvelu:
sudo systemctl start vncserver@:4.service
Yleistä vianmäärityksestä
Vaikka suhteellisen harvoin, saatat kohdata muita virheitä työskennellessäsi VNC:n kanssa. Esimerkiksi etätyöpöydän näyttö voi tyhjentyä tai roikkua, istunto voi kaatua kryptisen virheilmoituksen kera, VNC Viewer ei ehkä muodosta yhteyttä kunnolla tai lähetä komentoja GUI:lle sovellusten käynnistämiseksi jne.
Suosittelemme tutustumaan /var/log/messages
-tiedostoon paremman ymmärryksen saamiseksi. Toisinaan saatat joutua käynnistämään palvelimesi uudelleen tai ääritapauksissa luomaan VNC-palvelun uudelleen.
Järjestelmäresurssit voivat myös olla syyllinen; saatat joutua lisäämään lisää RAM-muistia Droplet-tietokoneeseesi jne.
Vaihe 8 – VNC-istuntojen suojaaminen SSH-tunneloinnilla
Siinä hetkenä sekä joevnc että janevnc ovat päässeet etätyöpöytään salaamattomien kanavien kautta. Kuten aiemmin näimme, VNC Viewer varoittaa tästä yhteyden muodostamisen yhteydessä; vain salasana salataan istunnon alkaessa. Kaikki myöhempi verkkoliikenne ja tiedonsiirto on avoin kenen tahansa siepattavaksi kesken kaiken.
Tietoa SSH-tunneloinnista
Tässä Secure Shell (SSH) -istunnot voivat auttaa. SSH:n avulla VNC voi toimia SSH-salatun istunnon yhteydessä. Tätä kutsutaan tunneloinniksi. Käytännössä VNC-liikenne tukeutuu SSH-protokollaan, jolloin kaikki viestintä palvelimen kanssa on salattua. Sitä kutsutaan tunneloinniksi, koska SSH suojaa VNC:tä ja VNC toimii ikään kuin tunnelissa SSH:n sisällä. SSH-tunnelointia voidaan käyttää myös muihin protokolliin, kuten POP-, X- tai IMAP-protokolliin.
SSH-tunnelointi toimii portin välityksellä, joka on periaatteessa keino kääntää pääsy yhdestä tietystä portista toisen koneen toiseen porttiin. Kun asiakassovellus muodostaa yhteyden porttiin A, joka toimii koneella A, portti välitetään läpinäkyvästi porttiin B, joka toimii koneella B. Asiakassovellus ei ole tietoinen tästä käännöksen tekemisestä ja luulee, että se muodostaa yhteyden alkuperäiseen porttiin. Porttien välitys on yksi SSH-protokollan ominaisuuksista.
Lue tämä opetusohjelma, jos haluat lisätietoja SSH-tunneloinnista.
Tässä opetusohjelmassa olemme määrittäneet VNC:n toimimaan porteissa 5904 (joevnc:lle) ja 5905 (janevnc:lle).
Port forwardingin avulla voimme asettaa paikallisen VNC-asiakkaamme muodostamaan yhteyden paikallisen asiakastietokoneen porttiin 5900, ja tämä voidaan yhdistää etäpalvelimen porttiin 5905. Tämä esimerkki koskee janevnc-yhteyttä, mutta voit helposti noudattaa samoja vaiheita minkä tahansa muun asiakkaan kohdalla.
Kun VNC-asiakassovellus käynnistyy, se voidaan osoittaa porttiin 5900 localhostissa, ja portin välitys siirtää sen läpinäkyvästi porttiin 5905 etäpalvelimella.
Huomaa: Sinun on käynnistettävä SSH-osio joka kerta, jotta yhteys on turvallinen.
OS X
Avaa Mac-tietokoneellasi Terminal.
Syötä seuraavat yhteystiedot ja muista korvata your_server_ip
etäpalvelimesi IP-osoitteella:
ssh -L 5900:your_server_ip:5905 janevnc@your_server_ip -N
Syötä janevnc:n UNIX-salasana. Yhteys näyttää roikkuvan; voit pitää sen käynnissä niin kauan kuin käytät etätyöpöytää.
Siirry nyt eteenpäin VNC Viewerin ohjeisiin.
Windows
Janevnc:n VNC-istunnon turvaamiseksi oletamme, että paikalliselle Windows-tietokoneelle on asennettu PuTTY. PuTTY on ilmainen ja sen voi ladata täältä.
Jos janevnc:n VNC- ja terminaali-istuntoja ei ole jo suljettu, sulje ne nyt.
Aloita PuTTY. Varmista istuntonäytössä, että määrität palvelimen IP-osoitteen ja annat yhteydelle kuvaavan nimen, ja tallenna yhteyden tiedot napsauttamalla Tallenna-painiketta. Huomaa, miten olemme määritelleet username@your_server_ip
Hostname-kenttään:
Seuraavaksi laajenna vasemmanpuoleisen navigointipaneelin SSH-valikkokohta ja valitse X11-kohta. Tämä näyttää istunnon X11-tiedonsiirto-ominaisuudet. Varmista, että Enable X11 forwarding -valintaruutu on valittuna. Näin varmistetaan, että SSH salaa palvelimen ja asiakkaan välillä kulkevan X Windows -liikenteen:
Viimeiseksi valitse SSH > Tunnelit. Kirjoita 5900
Lähdeportti-kenttään. Määritä Kohde-kenttään palvelimesi nimi tai IP-osoite, jota seuraa kaksoispiste ja aiotun käyttäjän VNC-portin numero. Meidän tapauksessamme olemme määritelleet your_server_ip:5905
.
Vaihtoehtoisesti voit käyttää porttia 5902. Tässä tapauksessa 2 olisi janevnc:n näyttönumero (muista viesti, joka näytettiin, kun janevnc suoritti komennon vncserver
).
Klikkaa Add-painiketta, ja yhdistäminen lisätään kohtaan Forwarded ports. Tähän lisäämme SSH-istunnon porttien välityksen; kun käyttäjä muodostaa yhteyden localhostiin porttiin 5900, yhteys tunneloidaan automaattisesti SSH:n kautta etäpalvelimen porttiin 5905.
Palaa takaisin Istunnot-kohtiin ja tallenna istunto janevnc:lle. Napsauta Avaa-painiketta ja uusi pääteistunto avautuu janevnc:lle. Kirjaudu sisään nimellä janevnc asianmukaisella UNIX-salasanalla:
VNC Viewer
Käynnistä VNC Viewer uudelleen. Kirjoita tällä kertaa VNC-palvelimen osoitteeseen <^> ja anna VNC-palvelimen valita salausmenetelmä:
Klikkaa Connect (Yhdistä) -painiketta.
Saat edelleen näyttöön valintaikkunan, jossa varoitetaan salaamattomasta istunnosta, mutta tällä kertaa voit huoletta sivuuttaa sen. VNC Viewer ei tiedä porttia, johon se ohjataan (tämä asetettiin juuri aloitetussa SSH-istunnossa), ja olettaa, että yrität muodostaa yhteyden paikalliseen koneeseen.
Hyväksymällä tämän varoituksen saat näkyviin tutun salasanakyselyn. Syötä janevncin VNC-salasana päästäksesi etätyöpöydälle.
Miten tiedät, että istunto oli salattu? Jos ajattelet asiaa, olimme asettaneet SSH-istuntoon porttien välityksen. Jos SSH-istuntoa ei olisi perustettu, portin välitys ei olisi toiminut. Itse asiassa, jos suljet terminaali-ikkunan ja kirjaudut ulos PuTTY-istunnosta ja yrität sitten muodostaa yhteyden pelkällä VNC Viewer -ohjelmalla, yhteysyritys osoitteeseen localhost:5900
näyttäisi seuraavan virheilmoituksen:
Jos siis localhost:5900
-yhteys toimii, voit olla varma, että yhteys on salattu.
Muista, että haluat luoda SSH-yhteyden ensin joka kerta, kun käytät VNC:tä, jotta yhteys on aina salattu.
Johtopäätös
CentOS Linux -järjestelmän käyttäminen graafisen käyttöliittymän etusivulta voi tehdä järjestelmän hallinnasta paljon yksinkertaisempaa. Voit muodostaa yhteyden mistä tahansa asiakaskäyttöjärjestelmästä, eikä sinun tarvitse olla riippuvainen web-pohjaisista hosting-hallintapaneeleista. VNC:llä on paljon pienempi jalanjälki verrattuna useimpiin ohjauspaneeleihin.
Vaikka olemme näyttäneet, miten kaksi tavallista käyttäjää voi muodostaa yhteyden VNC-asiakkaillaan, se tuskin on käytännöllistä vakavissa tuotantoympäristöissä. Todellisuudessa käyttäjillä on räätälöityjä sovelluksia tai selaimia palvelimen käyttöä varten. Useiden VNC-palveluiden käyttäminen kullekin käyttäjälle aiheuttaa myös tarpeetonta rasitusta järjestelmän resursseille, puhumattakaan siihen liittyvistä riskeistä.
Jos päätät asentaa ja käyttää VNC:tä tuotantoon tarkoitetulla Linux-palvelimellasi, suosittelemme vahvasti sen käyttämistä vain hallinnollisiin tarkoituksiin.