- Introduktion
- Mål
- Förutsättningar
- Steg 1 – Skapa två användarkonton
- Steg 2 – Installera GNOME Desktop
- Felsökning – servern fastnar i uppstartsfasen
- Steg 3 – Installera TigerVNC Server
- Steg 4 – Konfigurera VNC-tjänsten för två klienter
- Steg 5 – Konfigurera din brandvägg
- Steg 6 – Sätta in VNC-lösenord
- Steg 7 – Anslutning till fjärrskrivbord med en VNC-klient
- Felsökning – VNC-tjänsten kraschar
- Allmän felsökning
- Steg 8 – Säkerställa VNC-sessioner genom SSH-tunnling
- Slutsats
Introduktion
VNC eller Virtual Network Computing är ett plattformsoberoende protokoll som gör det möjligt för användare att ansluta till ett fjärrdatorsystem och använda dess resurser från ett grafiskt användargränssnitt (GUI).
Det är som att fjärrstyra ett program: klientdatorns tangenttryckningar eller musklick överförs via nätverket till fjärrdatorn. VNC gör det också möjligt att dela klippbräda mellan de båda datorerna. Om du kommer från en serverbakgrund i Microsoft Windows är VNC mycket likt Remote Desktop Service, förutom att det också finns tillgängligt för OS X, Linux och andra operativsystem.
Som allt annat i nätverksvärlden bygger VNC på klient-servermodellen: VNC-servern körs på en fjärrdator – din Droplet – som betjänar inkommande klientförfrågningar.
Mål
I den här handledningen kommer vi att lära oss att installera och konfigurera en VNC-server på CentOS 7. Vi kommer att installera TigerVNC-servern som är fritt tillgänglig från TigerVNC GitHub repository.
För att demonstrera hur VNC fungerar kommer vi också att installera GNOME-skrivbordet på din CentOS-server. Vi kommer att skapa två användarkonton och konfigurera VNC-åtkomst för dem. Vi kommer sedan att testa deras anslutning till fjärrskrivbordet och slutligen lära oss hur man säkrar fjärranslutningen genom en SSH-tunnel.
Förutsättningar
Kommandona, paketen och filerna som visas i den här handledningen testades på en minimal installation av CentOS 7. Vi rekommenderar följande:
- Distro: CentOS 7, 64-bit
- Resurskrav: En droplet med 2 GB RAM
- För att följa den här handledningen bör du använda en sudoanvändare. För att förstå hur sudo-privilegier fungerar kan du läsa den här DigitalOcean-handledningen
Varning: Du bör inte köra några kommandon, frågor eller konfigurationer från den här handledningen på en produktions-Linuxserver. Detta kan leda till säkerhetsproblem och driftstopp.
Steg 1 – Skapa två användarkonton
Först ska vi skapa två användarkonton. Dessa konton kommer att fjärransluta till vår CentOS 7-server från VNC-klienter.
- joevnc
- janevnc
Kör följande kommando för att lägga till ett användarkonto för joevnc:
sudo useradd -c "User Joe Configured for VNC Access" joevnc
Kör sedan kommandot passwd för att ändra joevncs lösenord:
sudo passwd joevnc
Utmatningen kommer att be oss om nytt lösenord. När det har angetts är kontot redo för inloggning:
Changing password for user joevnc.New password:Retype new password:passwd: all authentication tokens updated successfully.
Nästan, skapa ett konto för janevnc:
sudo useradd -c "User Jane Configured for VNC Access" janevnc
Sätt lösenordet för janevnc:
sudo passwd janevnc
Steg 2 – Installera GNOME Desktop
Nu ska vi installera GNOME desktop. GNOME är ett samarbete: det är en samling av programvara med fri och öppen källkod som utgör en mycket populär skrivbordsmiljö. Det finns andra skrivbordsmiljöer som KDE, men GNOME är mer populärt. Våra VNC-användare kommer att använda GNOME för att interagera med servern från sitt skrivbord:
sudo yum groupinstall -y "GNOME Desktop"
Avhängigt av hastigheten på ditt nätverk kan detta ta några minuter.
När paketgruppen är installerad startar du om servern:
sudo reboot
Felsökning – servern fastnar i uppstartsfasen
Avhängigt av hur servern har ställts in kan det hända att maskinen, när den startar, stannar kvar i uppstartsfasen och visar ett meddelande som det här:
Initial setup of CentOS Linux 7 (core)1) License information (Licence not accepted)Please make your choice from above :
För att ta dig förbi detta trycker du på 1 (licensläsning), sedan på 2 (acceptera licensen) och därefter på C (för att fortsätta). Du kan behöva trycka på C två eller flera gånger. Bilden nedan visar detta:
Om du inte ser detta fel och om uppstartsprocessen går smidigt, desto bättre – du kan gå vidare till nästa steg.
Steg 3 – Installera TigerVNC Server
TigerVNC är programvaran som gör det möjligt för oss att göra en fjärrskrivbordsanslutning.
Installera Tiger VNC-server:
sudo yum install -y tigervnc-server
Detta bör visa utdata som följande:
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!
Nu har vi VNC-server och GNOME-skrivbordet installerat. Vi har också skapat två användarkonton för anslutning via VNC.
Steg 4 – Konfigurera VNC-tjänsten för två klienter
VNC-servern startar inte automatiskt när den installeras första gången. För att kontrollera detta kör du följande kommando:
sudo systemctl status vncserver@:.service
Utmatningen kommer att se ut så här:
vncserver@:.service - Remote desktop service (VNC) Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled) Active: inactive (dead)
Du kan också köra det här kommandot:
sudo systemctl is-enabled [email protected]
Detta bör visa en utmatning som denna:
disabled
Så varför är den inaktiverad? Det beror på att varje användare startar en separat instans av VNC-tjänstdemonen. Med andra ord körs VNC inte som en enda process som betjänar varje användares begäran. Varje användare som ansluter via VNC måste starta en ny instans av daemon (eller så kan systemadministratören automatisera detta).
CentOS 7 använder daemon systemd för att starta andra tjänster. Varje tjänst som körs nativt under systemd har en fil med tjänsteenheter som placeras i katalogen /lib/systemd/system
av yum-installationsprogrammet. Processer som startas automatiskt vid uppstart har en länk till denna tjänsteenhetsfil som placeras i katalogen /etc/systemd/system/
.
I vårt fall skapades en generisk tjänsteenhetsfil i katalogen /lib/systemd/system/
, men ingen länk gjordes under /etc/systemd/system/
. För att testa detta kör du följande kommandon:
sudo ls -l /lib/systemd/system/vnc*
Du bör se:
-rw-r--r--. 1 root root 1744 Jun 10 16:15 /lib/systemd/system/[email protected]
Kontrollera sedan under /etc/systemd/system/
:
sudo ls -l /etc/systemd/system/*.wants/vnc*
Den här finns inte:
ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory
Det första steget är alltså att starta två nya instanser av VNC-servern för våra två användare. För att göra detta måste vi göra två kopior av den generiska VNC-tjänstenhetsfilen under /etc/system/system
. I kodutdraget nedan gör du två kopior med två olika namn:
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
Så varför lade vi till två siffror (tillsammans med kolonet) i de kopierade filnamnen?
Det här återknyter till konceptet med enskilda VNC-tjänster. VNC i sig självt körs på port 5900. Eftersom varje användare kommer att köra sin egen VNC-server måste varje användare ansluta via en separat port. Tillägget av ett nummer i filnamnet talar om för VNC att tjänsten ska köras som en underport till 5900
. Så i vårt fall kommer joevncs VNC-tjänst att köras på port 5904 (5900 + 4) och janevncs VNC-tjänst kommer att köras på port 5905 (5900 + 5).
Nästan redigerar du filen med tjänsteenheter för varje klient. Öppna /etc/systemd/system/vncserver@:4.service
-filen med editorn vi:
sudo vi /etc/systemd/system/vncserver@:4.service
En titt på avsnittet ”Quick HowTo” visar att vi redan har genomfört det första steget. Nu måste vi gå igenom de återstående stegen. Kommentarerna talar också om för oss att VNC är en icke betrodd anslutning. Vi kommer att prata om detta senare.
För tillfället redigerar du avsnittet i filen och ersätter instanser av
<USER>
med joevnc
. Lägg också till -geometry 1280x1024
-klausulen i slutet av parametern ExecStart
. Detta talar bara om för VNC vilken skärmstorlek den ska börja med. Du kommer att ändra två rader totalt. Så här ska den redigerade filen se ut (observera att hela filen inte visas):
# 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
Spara filen och avsluta vi.
Oppna på samma sätt filen /etc/systemd/system/vncserver@:5.service
i vi och gör ändringarna för användaren janevnc:
sudo vi /etc/systemd/system/vncserver@:5.service
Här är bara avsnittet med ändringarna markerade:
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 || :'
Nästan kör du följande kommandon för att ladda om systemd-demonen och även för att se till att VNC startar upp för två användare vid uppstart.
sudo systemctl daemon-reload
Aktivera den första serverinstansen:
sudo systemctl enable vncserver@:4.service
Output:
ln -s '/etc/systemd/system/vncserver@:4.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:4.service'
Aktivera den andra serverinstansen:
sudo systemctl enable vncserver@:5.service
Output:
ln -s '/etc/systemd/system/vncserver@:5.service' '/etc/systemd/system/multi-user.target.wants/vncserver@:5.service'
Nu har du konfigurerat två VNC-serverinstanser.
Steg 5 – Konfigurera din brandvägg
Näst måste vi konfigurera brandväggen så att VNC-trafik endast tillåts via portarna 5904 och 5905. CentOS 7 använder dynamisk brandvägg genom firewalld-demonen; tjänsten behöver inte startas om för att ändringarna ska träda i kraft.
Tjänsten firewalld bör starta automatiskt vid uppstart av systemet, men det är alltid bra att kontrollera:
sudo firewall-cmd --state
Detta bör visa:
running
Om tillståndet är ”not running” (inte igång) av någon anledning, utför följande kommando för att se till att den körs:
sudo systemctl start firewalld
Nu lägger du till reglerna för portarna 5904 och 5905:
sudo firewall-cmd --permanent --zone=public --add-port=5904-5905/tcp
Output:
success
Reload the firewall:
sudo firewall-cmd --reload
Output:
success
Steg 6 – Sätta in VNC-lösenord
Vi är ett steg ifrån att se VNC i aktion. I det här steget måste användarna ställa in sina VNC-lösenord. Detta är inte användarnas Linux-lösenord, utan lösenorden för att logga in på VNC-sessionerna.
Öppna en annan terminalanslutning till CentOS 7-servern och logga in den här gången som joevnc.
ssh joevnc@your_server_ip
Uppför följande kommando:
vncserver
Som visas i utmatningen nedan kommer servern att be joevnc att ställa in ett VNC-lösenord. Efter att ha skrivit in lösenordet visar programmet också ett antal filer som skapas i användarens hemkatalog:
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
Låt oss titta på raden New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1
. localhost.localdomain var servernamnet i vårt exempel; i ditt fall kan det vara annorlunda. Notera numret efter servernamnet: (1, separerat av ett kolon). Det är inte numret i joevncs fil med serviceenheter (som var 4). Det beror på att detta är visningsnumret som joevncs session kommer att köras på den här servern, inte själva tjänstens portnummer (5904
).
Nästan öppna en ny terminalsession och logga in som janevnc. Starta även här VNC-servern och ange ett lösenord för janevnc:
vncserver
Du bör se liknande utdata som visar att janevncs session kommer att köras på display 2.
För att avsluta laddar du om tjänsterna från huvudterminalsessionen:
sudo systemctl daemon-reloadsudo systemctl restart vncserver@:4.servicesudo systemctl restart vncserver@:5.service
Steg 7 – Anslutning till fjärrskrivbord med en VNC-klient
För den här handledningen antar vi att användarna joevnc och janevnc försöker ansluta till CentOS 7-servern från sina Windows-datorer.
De behöver var och en av dem en VNC-klient för Windows för att logga in på fjärrskrivbordet. Denna klient är precis som en terminalklient som PuTTY, förutom att den visar grafisk utdata. Det finns olika VNC-klienter tillgängliga, men den vi kommer att använda är RealVNC, som finns här. VNC Viewer för Mac OS X finns att ladda ner på samma sida, och Mac-versionen är ganska lik den för Windows.
När VNC Viewer startas visas en dialogruta som ser ut så här:
I fältet VNC Server lägger du till IP-adressen för din CentOS 7-server. Ange portnumret 5904 efter serverns IP-adress, separerad med ett kolon (:). Vi använde 5904 eftersom det är VNC-tjänstens port för joevnc.
Vi har också beslutat att låta VNC Viewer välja krypteringsmetod. Det här alternativet krypterar endast det lösenord som skickas över nätverket. All efterföljande kommunikation med servern kommer att vara okrypterad. (Vi kommer att konfigurera en säker SSH-tunnel i det sista steget.)
Faktiskt visar ett varningsmeddelande just detta:
Acceptera varningen för tillfället. En lösenordsprompt visas:
Inför joevncs VNC-lösenord som du ställde in tidigare.
Ett nytt fönster öppnas som visar GNOME-skrivbordet för vår CentOS-server på distans:
Acceptera standardvälkomstmeddelandet.
Nu kan janevnc starta ett grafiskt verktyg som GNOME-kalkylatorn:
Du kan låta den här skrivbordsanslutningen vara öppen.
Nu kan janevnc också starta en annan VNC-session med CentOS-servern. IP-adressen är densamma och porten är 5905:
När janevnc loggar in via VNC Viewer visas ett tomt skrivbord med ett välkomstmeddelande, precis som det visades för joevnc. De två användarna delar med andra ord inte skrivbordsinstanserna. joevncs skrivbord borde fortfarande visa miniräknaren.
För att stänga fjärrskrivbordssessionen räcker det med att stänga fönstret. Detta stoppar dock inte användarens VNC-tjänst i bakgrunden på servern. Om tjänsten inte stoppas eller startas om och maskinen inte har startats om, skulle samma skrivbordssession visas vid nästa inloggning.
Slut VNC Viewer-fönstren för joevnc och janevnc. Stäng även deras terminalsessioner. Från huvudterminalfönstret kontrollerar du om VNC-tjänsterna fortfarande körs:
sudo systemctl status vncserver@:4.service
Utmatningen visar att fjärrskrivbordet fortfarande körs:
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). . .
Kontrollera den andra tjänsten:
sudo systemctl status vncserver@:5.service
Den här körs också:
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). . .
Om du skulle vilja logga in på joevnc:s skrivbord igen vid det här laget, skulle samma kalkylatorapp vara öppen.
Detta innebär några intressanta utmaningar för systemadministratörer. Om du har ett antal användare som ansluter till servern via VNC kanske du vill hitta något sätt att stoppa deras VNC-tjänster när de inte längre behövs. Detta kan spara värdefulla systemresurser.
Felsökning – VNC-tjänsten kraschar
När du testar och leker med VNC kan du ibland upptäcka att tjänsten har kraschat och inte går att återställa. När du försöker kontrollera statusen:
sudo systemctl status vncserver@:4.service
Detta långa felmeddelande kan komma upp:
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)
Försök att starta tjänsten fungerar inte:
sudo systemctl start vncserver@:4.service
Skjuten uppstart:
Job for vncserver@:4.service failed. See 'systemctl status vncserver@:4.service' and 'journalctl -xn' for details.
Svårt att starta tjänsten är oftast orsaken enkel nog. Kontrollera /var/log/messages
:
sudo tail /var/log/messages
Det relaterade felet ser ut så här:
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
Hjälpen är att ta bort filen i mappen /tmp:
sudo rm -i /tmp/.X11-unix/X4
Output:
rm: remove socket '/tmp/.X11-unix/X4'? y
Starta sedan VNC-tjänsten:
sudo systemctl start vncserver@:4.service
Allmän felsökning
Och även om det är relativt sällsynt kan du stöta på andra fel när du arbetar med VNC. Till exempel kan din fjärrskrivbordsskärm bli tom eller hänga, sessionen kan krascha med ett kryptiskt felmeddelande, VNC Viewer kan inte ansluta korrekt eller överföra kommandon till GUI för att starta program etc.
Vi rekommenderar att du kollar filen /var/log/messages
för att få en bättre förståelse. Ibland kan du behöva starta om din server, eller i extrema fall återskapa VNC-tjänsten.
Systemresurser kan också vara en boven i dramat; du kan behöva lägga till extra RAM-minne till din Droplet, etc.
Steg 8 – Säkerställa VNC-sessioner genom SSH-tunnling
Helt fram till nu har både joevnc och janevnc haft åtkomst till sina fjärrskrivbord via okrypterade kanaler. Som vi såg tidigare varnar VNC Viewer oss för detta vid anslutningstillfället; endast lösenordet krypteras när sessionerna börjar. All efterföljande nätverkstrafik och dataöverföring är öppen för vem som helst att avlyssna i mitten.
Om SSH Tunnelling
Det är här Secure Shell (SSH)-sessioner kan hjälpa till. Med SSH kan VNC köras inom ramen för en SSH-krypterad session. Detta är känt som tunnling. VNC-trafiken använder sig i själva verket av SSH-protokollet, vilket leder till att all kommunikation med servern är krypterad. Det kallas tunnling eftersom SSH ger ett omslutande skydd för VNC och VNC körs som om det vore en tunnel inom SSH. SSH-tunnling kan också användas för andra protokoll som POP, X eller IMAP.
SSH-tunnling fungerar med port forwarding, vilket i princip är ett sätt att översätta åtkomst från en viss port till en annan port på en annan maskin. När ett klientprogram ansluter till port A som körs på maskin A, vidarebefordras det öppet till port B som körs på maskin B. Klientprogrammet är omedvetet om denna översättning och tror att det ansluter till den ursprungliga porten. Port forwarding är en av funktionerna i SSH-protokollet.
För mer detaljerad information om SSH-tunnling kan du läsa den här handledningen.
I den här handledningen har vi konfigurerat VNC så att det körs på portarna 5904 (för joevnc) och 5905 (för janevnc).
Med portvidarebefordran kan vi ställa in vår lokala VNC-klient så att den ansluter till port 5900 på den lokala klientdatorn, och denna kan mappas till port 5905 på fjärrservern. Det här exemplet gäller janevncs anslutning, men du kan enkelt följa samma steg för andra klienter.
När VNC-klientprogrammet startar kan det pekas till port 5900 på localhost, och vår portvidarebefordran transporterar det transparent till port 5905 på fjärrservern.
Notera: Du måste starta en SSH-sektion varje gång för att göra anslutningen säker.
OS X
Öppna Terminal på din Mac.
Inför följande anslutningsinformation, var noga med att ersätta your_server_ip
med fjärrserverns IP-adress:
ssh -L 5900:your_server_ip:5905 janevnc@your_server_ip -N
Inför janevnc:s UNIX-lösenord. Anslutningen kommer att verka hängande; du kan hålla den igång så länge du använder fjärrskrivbordet.
Skippa nu vidare till instruktionerna för VNC Viewer.
Windows
För att säkra janevncs VNC-session antar vi att PuTTY är installerat på den lokala Windows-datorn. PuTTY är gratis och kan laddas ner härifrån.
Om janevncs VNC- och terminalsessioner inte redan är stängda, stäng dem nu.
Starta PuTTY. På sessionsskärmen ser du till att du anger serverns IP-adress och ger ett beskrivande namn till anslutningen och klickar sedan på knappen Save (Spara) för att spara anslutningsuppgifterna. Observera att vi har angett username@your_server_ip
i fältet Hostname:
Nästan expanderar du menyalternativet SSH i det vänstra navigeringsfönstret och väljer alternativet X11. Detta visar X11-vidarebefordringsegenskaperna för sessionen. Kontrollera att kryssrutan för Enable X11 forwarding är markerad. Detta säkerställer att SSH krypterar X Windows-trafiken som flödar mellan servern och klienten:
Slutligt väljer du SSH > Tunnlar. Skriv 5900
i fältet Källport. I fältet Destination anger du serverns namn eller IP-adress, följt av ett kolon och VNC-portnumret för den avsedda användaren. I vårt fall har vi angett your_server_ip:5905
.
Alternativt kan du använda port 5902. 2:an i det här fallet skulle vara visningsnumret för janevnc (kom ihåg meddelandet som visas när janevnc körde kommandot vncserver
).
Klicka på knappen Lägg till så läggs mappningen till under Vidarebefordrade portar. Här lägger vi till portvidarebefordran för SSH-sessionen; när användaren ansluter till localhost på port 5900 kommer anslutningen automatiskt att tunnlas via SSH till fjärrserverns port 5905.
Gå tillbaka till punkterna Sessioner och spara sessionen för janevnc. Klicka på knappen Öppna så öppnas en ny terminalsession för janevnc. Logga in som janevnc med lämpligt UNIX-lösenord:
VNC Viewer
Nästan starta VNC Viewer igen. Den här gången skriver du <^> i VNC-serveradressen och låter VNC-servern välja krypteringsmetod:
Klicka på knappen Anslut.
Du kommer fortfarande att få upp dialogrutan som varnar dig för en okrypterad session, men den här gången kan du lugnt ignorera den. VNC Viewer känner inte till vilken port den vidarebefordras till (den ställdes in i SSH-sessionen som just startades) och antar att du försöker ansluta till den lokala maskinen.
Accepterar du denna varning visas den välbekanta lösenordsfrågan. Ange janevncs VNC-lösenord för att få tillgång till fjärrskrivbordet.
Hur vet du då att sessionen var krypterad? Om du tänker efter hade vi ställt in portvidarebefordran i SSH-sessionen. Om en SSH-session inte hade upprättats skulle port forwarding inte ha fungerat. Faktum är att om du stänger terminalfönstret och loggar ut från PuTTY-sessionen och sedan försöker ansluta med enbart VNC Viewer, skulle ett anslutningsförsök till localhost:5900
visa följande felmeddelande:
Så om localhost:5900
-anslutningen fungerar kan du vara säker på att anslutningen är krypterad.
Håll i minnet att du vill upprätta SSH-anslutningen först varje gång du använder VNC, för att försäkra dig om att anslutningen alltid är krypterad.
Slutsats
Accessing your CentOS Linux system from a GUI front end can make system administration much simpler. Du kan ansluta från vilket klientoperativsystem som helst och behöver inte vara beroende av webbaserade kontrollpaneler för webbhotell. VNC har ett mycket mindre fotavtryck jämfört med de flesta kontrollpaneler.
Och även om vi har visat hur två vanliga användare kan ansluta med sina VNC-klienter är det knappast praktiskt i seriösa produktionsmiljöer. I verkligheten kommer användarna att ha anpassade program eller webbläsare för att komma åt servern. Att köra ett antal VNC-tjänster för varje användare skapar också en onödig belastning på systemresurserna, för att inte tala om de inneboende risker som är förknippade med det.
Om du bestämmer dig för att installera och köra VNC på din produktions-Linux-server rekommenderar vi starkt att du endast använder den för administrativa ändamål.