- Inleiding
- Goals
- Voorvereisten
- Stap 1 – Twee gebruikersaccounts aanmaken
- Stap 2 – Installeren van GNOME Desktop
- Troubleshooting – Server Stuck at Boot Phase
- Stap 3 – TigerVNC Server installeren
- Step 4 – Configureren van VNC Service voor twee clients
- Stap 5 – Het configureren van uw firewall
- Stap 6 – VNC wachtwoorden instellen
- Stap 7 – Verbinding maken met externe desktops met een VNC-client
- Troubleshooting – VNC Service Crashes
- Algemene Probleemoplossing
- Stap 8 – VNC-sessies beveiligen via SSH-tunneling
- Conclusie
Inleiding
VNC of Virtual Network Computing is een platformonafhankelijk protocol dat gebruikers in staat stelt verbinding te maken met een computersysteem op afstand en de bronnen ervan te gebruiken via een grafische gebruikersinterface (GUI).
Het lijkt op het op afstand besturen van een applicatie: de toetsaanslagen of muisklikken van de clientcomputer worden via het netwerk naar de computer op afstand verzonden. VNC maakt het ook mogelijk klembord delen tussen beide computers. Als je van een Microsoft Windows server achtergrond komt, lijkt VNC veel op de Remote Desktop Service, behalve dat het ook beschikbaar is voor OS X, Linux, en andere besturingssystemen.
Zoals alles in de netwerk wereld, is VNC gebaseerd op het client-server model: VNC-server draait op een externe computer – uw Droplet – die inkomende clientverzoeken bedient.
Goals
In deze tutorial zullen we leren hoe een VNC-server op CentOS 7 te installeren en te configureren. We zullen de TigerVNC server installeren die vrij beschikbaar is vanaf de TigerVNC GitHub repository.
Om te demonstreren hoe VNC werkt, zullen we ook de GNOME desktop op uw CentOS server installeren. We maken twee gebruikersaccounts aan en configureren VNC toegang voor hen. Daarna testen we hun verbinding met de remote desktop, en tenslotte leren we hoe we de remote verbinding kunnen beveiligen via een SSH tunnel.
Voorvereisten
De commando’s, pakketten, en bestanden die in deze tutorial worden getoond zijn getest op een minimale installatie van CentOS 7. Wij raden het volgende aan:
- Distro: CentOS 7, 64-bit
- Benodigde middelen: Een Droplet met 2 GB RAM
- Om deze tutorial te volgen, moet u een sudo gebruiker gebruiken. Om te begrijpen hoe sudo-privileges werken, kunt u deze DigitalOcean-handleiding raadplegen
Waarschuwing: U mag geen opdrachten, query’s of configuraties uit deze zelfstudie uitvoeren op een Linux-productieserver. Dit kan leiden tot beveiligingsproblemen en downtime.
Stap 1 – Twee gebruikersaccounts aanmaken
Eerst zullen we twee gebruikersaccounts aanmaken. Deze accounts zullen op afstand verbinding maken met onze CentOS 7-server vanaf VNC-clients.
- joevnc
- janevnc
Run het volgende commando om een gebruikersaccount voor joevnc toe te voegen:
sudo useradd -c "User Joe Configured for VNC Access" joevnc
Run dan het passwd commando om het wachtwoord van joevnc te veranderen:
sudo passwd joevnc
De uitvoer zal ons om een nieuw wachtwoord vragen. Eenmaal gegeven, zal het account klaar zijn om in te loggen:
Changing password for user joevnc.New password:Retype new password:passwd: all authentication tokens updated successfully.
Volgende, maak een account voor janevnc:
sudo useradd -c "User Jane Configured for VNC Access" janevnc
Stel het wachtwoord voor janevnc in:
sudo passwd janevnc
Stap 2 – Installeren van GNOME Desktop
Nu gaan we GNOME desktop installeren. GNOME is een gezamenlijke inspanning: het is een verzameling van vrije en open source software die samen een zeer populaire bureaubladomgeving vormen. Er zijn andere desktop omgevingen zoals KDE, maar GNOME is populairder. Onze VNC gebruikers zullen GNOME gebruiken om te communiceren met de server vanaf zijn bureaublad:
sudo yum groupinstall -y "GNOME Desktop"
Afhankelijk van de snelheid van uw netwerk, kan dit een paar minuten duren.
Als de package groep is geïnstalleerd, herstart u de server:
sudo reboot
Troubleshooting – Server Stuck at Boot Phase
Afhankelijk van hoe uw server is ingesteld, kan de machine bij het opstarten in de boot fase blijven met een boodschap als deze:
Initial setup of CentOS Linux 7 (core)1) License information (Licence not accepted)Please make your choice from above :
Om hier voorbij te komen, drukt u op 1 (licentie lezen), dan 2 (licentie accepteren), en dan C (om verder te gaan). Het kan zijn dat u twee of meer keer op C moet drukken. De afbeelding hieronder laat dit zien:
Als u deze fout niet ziet en het opstartproces verloopt soepel, des te beter – u kunt doorgaan naar de volgende stap.
Stap 3 – TigerVNC Server installeren
TigerVNC is de software die ons in staat stelt een remote desktop verbinding te maken.
Installeer de Tiger VNC server:
sudo yum install -y tigervnc-server
Dit zou uitvoer als het volgende moeten laten zien:
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 hebben we de VNC server en de GNOME desktop geïnstalleerd. We hebben ook twee gebruikersaccounts aangemaakt om verbinding te maken via VNC.
Step 4 – Configureren van VNC Service voor twee clients
VNC server start niet automatisch als hij voor het eerst wordt geïnstalleerd. Om dit te controleren, voert u het volgende commando uit:
sudo systemctl status vncserver@:.service
De uitvoer zal als volgt zijn:
vncserver@:.service - Remote desktop service (VNC) Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled) Active: inactive (dead)
U kunt ook dit commando uitvoeren:
sudo systemctl is-enabled [email protected]
Dit zou de uitvoer als volgt moeten tonen:
disabled
Waarom is het dan uitgeschakeld? Dat is omdat elke gebruiker een aparte instantie van de VNC service daemon start. Met andere woorden, VNC draait niet als een enkel proces dat elk gebruikersverzoek afhandelt. Elke gebruiker die verbinding maakt via VNC zal een nieuwe instantie van de daemon moeten starten (of de systeembeheerder kan dit automatiseren).
CentOS 7 gebruikt de systemd daemon om andere services te starten. Elke service die van nature draait onder systemd heeft een service unit bestand dat door het yum installatieprogramma in de /lib/systemd/system
directory wordt geplaatst. Processen die automatisch gestart worden tijdens het opstarten hebben een link naar dit service unit bestand in de /etc/systemd/system/
directory.
In ons geval is er een generiek service unit bestand aangemaakt in de /lib/systemd/system/
directory, maar er is geen link gemaakt onder /etc/systemd/system/
. Om dit te testen, voert u de volgende commando’s uit:
sudo ls -l /lib/systemd/system/vnc*
U zou moeten zien:
-rw-r--r--. 1 root root 1744 Jun 10 16:15 /lib/systemd/system/[email protected]
Controleer vervolgens onder /etc/systemd/system/
:
sudo ls -l /etc/systemd/system/*.wants/vnc*
Deze bestaat niet:
ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory
Dus, de eerste stap is om twee nieuwe instanties van VNC server te starten voor onze twee gebruikers. Om dit te doen, moeten we twee kopieën maken van het generieke VNC service unit bestand onder /etc/system/system
. In de code snippet hieronder, maak je twee kopieën met twee verschillende namen:
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
Dus waarom hebben we twee getallen toegevoegd (samen met de dubbele punt) in de gekopieerde bestandsnamen?
Opnieuw, dat komt terug op het concept van individuele VNC services. VNC zelf draait op poort 5900. Aangezien elke gebruiker zijn eigen VNC server zal draaien, zal elke gebruiker via een aparte poort moeten verbinden. De toevoeging van een nummer in de bestandsnaam vertelt VNC om die service te draaien als een sub-poort van 5900
. Dus in ons geval, zal joevnc’s VNC service draaien op poort 5904 (5900 + 4) en janevnc’s zal draaien op 5905 (5900 + 5).
Volgende bewerk het service unit bestand voor elke client. Open het /etc/systemd/system/vncserver@:4.service
bestand met de vi editor:
sudo vi /etc/systemd/system/vncserver@:4.service
Een blik op de “Quick HowTo” sectie leert ons dat we de eerste stap al hebben voltooid. Nu moeten we de resterende stappen doorlopen. De opmerkingen vertellen ons ook dat VNC een niet-trusted verbinding is. We zullen het hier later over hebben.
Voor nu, bewerk de sectie van het bestand, door de instanties van
<USER>
te vervangen door joevnc
. Voeg ook de -geometry 1280x1024
clausule toe aan het eind van de ExecStart
parameter. Dit vertelt VNC alleen de schermgrootte waarin het moet starten. Je zult in totaal twee regels aanpassen. Dit is hoe het gewijzigde bestand eruit zou moeten zien (merk op dat niet het hele bestand wordt getoond):
# 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
Bewaar het bestand en sluit vi af.
Op dezelfde manier opent u het /etc/systemd/system/vncserver@:5.service
bestand in vi en brengt u de wijzigingen aan voor gebruiker janevnc:
sudo vi /etc/systemd/system/vncserver@:5.service
Hier ziet u alleen de sectie met de wijzigingen gemarkeerd:
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 || :'
Daarna voert u de volgende commando’s uit om de systemd daemon opnieuw te laden en ook om ervoor te zorgen dat VNC voor twee gebruikers opstart tijdens het opstarten.
sudo systemctl daemon-reload
Enable the first server instance:
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'
Enable the second server instance:
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 heb je twee VNC server instances geconfigureerd.
Stap 5 – Het configureren van uw firewall
Nog meer, we moeten de firewall configureren om VNC verkeer alleen toe te staan via poorten 5904 en 5905. CentOS 7 gebruikt Dynamic Firewall via de firewalld daemon; de service hoeft niet opnieuw opgestart te worden om de wijzigingen effect te laten sorteren.
De firewalld service zou automatisch moeten starten bij het opstarten van het systeem, maar het is altijd goed om te controleren:
sudo firewall-cmd --state
Dit zou moeten tonen:
running
Als de status om wat voor reden dan ook “not running” is, voer dan het volgende commando uit om er zeker van te zijn dat hij draait:
sudo systemctl start firewalld
Voeg nu de regels toe voor poorten 5904 en 5905:
sudo firewall-cmd --permanent --zone=public --add-port=5904-5905/tcp
Uitvoer:
success
Laad de firewall op:
sudo firewall-cmd --reload
Uitvoer:
success
Stap 6 – VNC wachtwoorden instellen
We zijn één stap verwijderd van het in actie zien van VNC. In deze stap moeten de gebruikers hun VNC wachtwoorden instellen. Dit zijn niet de Linux wachtwoorden van de gebruikers, maar de wachtwoorden om in te loggen op de VNC sessies.
Open een andere terminal verbinding met de CentOS 7 server, en log deze keer in als joevnc.
ssh joevnc@your_server_ip
Voer het volgende commando uit:
vncserver
Zoals te zien is in de uitvoer hieronder, zal de server joevnc vragen om een VNC wachtwoord in te stellen. Na het intypen van het wachtwoord, toont het programma ook een aantal bestanden die worden gemaakt in de home directory van de gebruiker:
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
Laten we eens kijken naar de regel New 'localhost.localdomain:1 (joevnc)' desktop is localhost.localdomain:1
. localhost.localdomain was de server naam in ons voorbeeld; in uw geval kan het anders zijn. Let op het nummer na de servernaam: (1, gescheiden door een dubbele punt). Het is niet het nummer in joevnc’s service unit bestand (dat was 4). Dat komt omdat dit het weergavenummer is waarop joevnc’s sessie op deze server zal draaien, niet het poortnummer van de service (5904
) zelf.
Naar aanleiding hiervan open je een nieuwe terminal sessie en log je in als janevnc. Start ook hier de VNC server en stel een wachtwoord in voor janevnc:
vncserver
U zou vergelijkbare uitvoer moeten zien die laat zien dat de sessie van janevnc op beeldscherm 2 zal draaien.
Laad tenslotte de services opnieuw vanuit de hoofdterminalsessie:
sudo systemctl daemon-reloadsudo systemctl restart vncserver@:4.servicesudo systemctl restart vncserver@:5.service
Stap 7 – Verbinding maken met externe desktops met een VNC-client
Voor deze tutorial gaan we ervan uit dat de gebruikers joevnc en janevnc verbinding proberen te maken met de CentOS 7 server vanaf hun Windows computers.
Ze hebben elk een VNC-client voor Windows nodig om in te loggen op de externe desktop. Deze client is net als een terminal client zoals PuTTY, behalve dat het grafische uitvoer toont. Er zijn verschillende VNC clients beschikbaar, maar degene die wij zullen gebruiken is RealVNC, hier beschikbaar. VNC Viewer voor Mac OS X is beschikbaar voor download op dezelfde pagina, en de Mac versie is redelijk gelijk aan de Windows versie.
Wanneer VNC Viewer wordt gestart, verschijnt er een dialoogvenster zoals hieronder:
In het veld VNC Server voegt u het IP-adres van uw CentOS 7 server toe. Geef het poortnummer 5904 op na het IP-adres van de server, gescheiden door een dubbele punt (:). We hebben 5904 gebruikt omdat dat de VNC service poort is voor joevnc.
We hebben ook besloten om VNC Viewer de encryptie methode te laten kiezen. Deze optie zal alleen het wachtwoord versleutelen dat over het netwerk wordt verzonden. Alle daaropvolgende communicatie met de server zal onversleuteld zijn. (We zullen een veilige SSH-tunnel opzetten in de laatste stap.)
In feite laat een waarschuwingsbericht precies dat zien:
Accepteer de waarschuwing voor nu. Er verschijnt een wachtwoordprompt:
Voer het VNC-wachtwoord van joevnc in dat u eerder hebt ingesteld.
Er wordt een nieuw venster geopend dat de GNOME-desktop voor onze CentOS-server op afstand weergeeft:
Accepteer de standaard welkomstboodschap.
Nu kan joevnc een grafisch programma starten zoals de GNOME calculator:
Je kunt deze desktop verbinding open laten.
Nu kan janevnc ook een andere VNC sessie starten met de CentOS server. Het IP adres is hetzelfde, en de poort is 5905:
Wanneer janevnc inlogt via VNC Viewer, wordt er een leeg bureaublad met een welkomstbericht getoond, net zoals dat voor joevnc werd getoond. Met andere woorden, de twee gebruikers delen de bureaublad instanties niet. joevnc’s bureaublad zou nog steeds de rekenmachine moeten tonen.
Om de remote desktop sessie te sluiten, is het simpelweg sluiten van het venster voldoende. Dit stopt echter niet de VNC service van de gebruiker op de achtergrond op de server. Als de service niet is gestopt of opnieuw is gestart en de machine geen reboots heeft gehad, zou dezelfde desktop sessie worden gepresenteerd bij de volgende logon.
Sluit de VNC Viewer vensters voor joevnc en janevnc. Sluit ook hun terminal sessies. Controleer in het hoofdvenster van de terminal of de VNC-services nog draaien:
sudo systemctl status vncserver@:4.service
De uitvoer laat zien dat het externe bureaublad nog draait:
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). . .
Controleer de tweede service:
sudo systemctl status vncserver@:5.service
Deze draait ook:
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). . .
Als u zich nu weer zou aanmelden op het bureaublad van joevnc, zou u dezelfde rekenmachine-app geopend zien.
Dit geeft een aantal interessante uitdagingen voor systeembeheerders. Als je een aantal gebruikers hebt die verbinding maken met de server via VNC, wil je misschien een manier bedenken om hun VNC diensten te stoppen als ze niet langer nodig zijn. Dit kan waardevolle systeembronnen besparen.
Troubleshooting – VNC Service Crashes
Tijdens het testen van en spelen met VNC, kan het voorkomen dat de service is gecrashed en niet meer te herstellen is. Wanneer u probeert de status te controleren:
sudo systemctl status vncserver@:4.service
De volgende lange foutmelding kan verschijnen:
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)
Poging om de service te starten werkt niet:
sudo systemctl start vncserver@:4.service
Failed startup:
Job for vncserver@:4.service failed. See 'systemctl status vncserver@:4.service' and 'journalctl -xn' for details.
De reden is meestal eenvoudig genoeg. Controleer /var/log/messages
:
sudo tail /var/log/messages
De bijbehorende fout ziet er als volgt uit:
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
De remedie is om het bestand onder de map /tmp te verwijderen:
sudo rm -i /tmp/.X11-unix/X4
Uitvoer:
rm: remove socket '/tmp/.X11-unix/X4'? y
Start dan de VNC service:
sudo systemctl start vncserver@:4.service
Algemene Probleemoplossing
Hoewel het relatief zeldzaam is, kunt u andere fouten tegenkomen wanneer u met VNC werkt. Bijvoorbeeld, uw remote desktop scherm kan leeg raken of blijven hangen, de sessie kan crashen met een cryptische foutmelding, VNC Viewer kan niet goed verbinden of commando’s naar de GUI sturen om applicaties te starten, etc.
We raden aan het /var/log/messages
bestand te controleren om een beter begrip te krijgen. Soms moet u uw server opnieuw opstarten, of in extreme gevallen de VNC-service opnieuw starten.
Systeembronnen kunnen ook een boosdoener zijn; misschien moet u extra RAM toevoegen aan uw Droplet, enz.
Stap 8 – VNC-sessies beveiligen via SSH-tunneling
Tot nu toe hebben zowel joevnc als janevnc toegang tot hun externe desktops via onversleutelde kanalen. Zoals we eerder zagen, waarschuwt VNC Viewer ons hiervoor op het moment van verbinding maken; alleen het wachtwoord wordt versleuteld als de sessies beginnen. Al het daaropvolgende netwerk verkeer en data overdracht is open voor iedereen om in het midden te onderscheppen.
Over SSH Tunnelling
Dit is waar Secure Shell (SSH) sessies kunnen helpen. Met SSH, kan VNC draaien binnen de context van een SSH gecodeerde sessie. Dit staat bekend als tunneling. In feite lift het VNC verkeer mee op het SSH protocol, waardoor alle communicatie met de server versleuteld is. Het wordt tunnelen genoemd omdat SSH bescherming biedt over VNC heen en VNC draait als in een tunnel binnen SSH. SSH tunneling kan ook gebruikt worden voor andere protocollen zoals POP, X, of IMAP.
SSH tunnelling werkt met port forwarding, wat in feite een manier is om toegang van een bepaalde poort te vertalen naar een andere poort op een andere machine. Met port forwarding, wanneer een cliëntapplicatie verbinding maakt met poort A op machine A, wordt deze transparant doorgestuurd naar poort B op machine B. De cliëntapplicatie is zich niet bewust van deze vertaling en denkt dat het verbinding maakt met de originele poort. Port forwarding is een van de mogelijkheden van het SSH protocol.
Voor meer gedetailleerde informatie over SSH tunneling, lees deze tutorial.
In deze tutorial hebben we VNC geconfigureerd om op poort 5904 (voor joevnc) en 5905 (voor janevnc) te draaien.
Met port forwarding, kunnen we onze lokale VNC client instellen om verbinding te maken met poort 5900 op de lokale client computer, en deze kan worden toegewezen aan poort 5905 op de server op afstand. Dit voorbeeld is voor janevnc’s verbinding, maar je zou gemakkelijk dezelfde stappen kunnen volgen voor andere clients.
Wanneer de VNC client applicatie start, kan deze worden gewezen op poort 5900 op localhost, en onze port forwarding zal deze transparant transporteren naar poort 5905 op de remote server.
Note: U moet elke keer een SSH sectie starten om de verbinding veilig te maken.
OS X
Op uw Mac, open Terminal.
Voer de volgende verbindingsinformatie in, en zorg ervoor dat u your_server_ip
vervangt door het IP adres van uw remote server:
ssh -L 5900:your_server_ip:5905 janevnc@your_server_ip -N
Voer janevnc’s UNIX wachtwoord in. De verbinding zal lijken te hangen; u kunt hem aan de gang houden zolang u de remote desktop gebruikt.
Nu door naar de VNC Viewer instructies.
Windows
Voor het beveiligen van janevnc’s VNC sessie, zullen we aannemen dat de lokale Windows computer PuTTY heeft geinstalleerd. PuTTY is gratis en kan hier worden gedownload.
Als janevnc’s VNC en terminal sessies nog niet gesloten zijn, sluit ze dan nu.
Start PuTTY. In het sessiescherm, zorg ervoor dat je het server IP adres specificeert en geef een beschrijvende naam aan de verbinding, klik dan op de Bewaar knop om de verbindingsdetails te bewaren. Merk op hoe we username@your_server_ip
in het Hostname veld hebben gespecificeerd:
Volgende, vouw het SSH menu item uit in het linker navigatie deelvenster, en selecteer het X11 item. Dit toont de X11-forwarding-eigenschappen voor de sessie. Zorg ervoor dat het selectievakje voor X11 forwarding inschakelen is aangevinkt. Dit zorgt ervoor dat SSH het X Windows-verkeer dat tussen de server en de client stroomt versleutelt:
Selecteer tenslotte SSH > Tunnels. Typ 5900
in het veld Bronpoort. In het veld Destination geeft u de naam of het IP-adres van uw server op, gevolgd door een dubbele punt en het VNC-poortnummer voor de beoogde gebruiker. In ons geval hebben we your_server_ip:5905
.
opgegeven. Als alternatief kunt u poort 5902 gebruiken. De 2 in dit geval zou het weergavenummer voor janevnc zijn (herinner u de boodschap die getoond werd wanneer janevnc het vncserver
commando uitvoerde).
Klik op de Toevoegen knop en de toewijzing zal toegevoegd worden onder Doorgestuurde poorten. Hier voegen we poort forwarding toe voor de SSH-sessie; wanneer de gebruiker verbinding maakt met localhost op poort 5900, wordt de verbinding automatisch getunneld via SSH naar poort 5905 van de remote server.
Ga terug naar de Sessies items en sla de sessie op voor janevnc. Klik op de Open knop en een nieuwe terminal sessie wordt geopend voor janevnc. Log in als janevnc met het juiste UNIX wachtwoord:
VNC Viewer
Start nu VNC Viewer opnieuw. Typ deze keer in het VNC-serveradres <^> en laat de VNC-server de encryptiemethode kiezen:
Klik op de knop Connect.
U krijgt nog steeds het dialoogvenster te zien waarin u wordt gewaarschuwd voor een niet-versleutelde sessie, maar deze keer kunt u deze veilig negeren. VNC Viewer weet niet naar welke poort hij wordt doorgestuurd (deze is ingesteld in de zojuist gestarte SSH sessie) en gaat er van uit dat je probeert verbinding te maken met de lokale machine.
Accepteer je deze waarschuwing, dan verschijnt de bekende wachtwoord prompt. Voer janevnc’s VNC wachtwoord in om toegang te krijgen tot het bureaublad op afstand.
Hoe weet je nu dat de sessie versleuteld was? Als je er over nadenkt, hadden we port forwarding ingesteld in de SSH sessie. Als er geen SSH sessie tot stand was gebracht, zou port forwarding niet hebben gewerkt. In feite, als je het terminal venster sluit en uitlogt uit de PuTTY sessie en dan probeert verbinding te maken met VNC Viewer alleen, zou een verbindingspoging naar localhost:5900
de volgende foutmelding geven:
Dus, als de localhost:5900
verbinding werkt, kun je er zeker van zijn dat de verbinding versleuteld is.
Bedenk dat u iedere keer dat u VNC gebruikt eerst de SSH-verbinding tot stand moet brengen, om er zeker van te zijn dat de verbinding altijd versleuteld is.
Conclusie
Toegang tot uw CentOS Linux systeem vanaf een GUI front-end kan het systeembeheer veel eenvoudiger maken. U kunt verbinding maken vanaf elk client-besturingssysteem en hoeft niet afhankelijk te zijn van web-based hosting control panels. VNC heeft een veel kleinere footprint vergeleken met de meeste control panels.
Hoewel we hebben laten zien hoe twee gewone gebruikers kunnen verbinden met hun VNC clients, is dat nauwelijks praktisch in serieuze productie omgevingen. In werkelijkheid zullen gebruikers aangepaste applicaties of browsers hebben voor toegang tot de server. Het draaien van een aantal VNC services voor iedere gebruiker zorgt ook voor een onnodige belasting van systeembronnen, om nog maar te zwijgen van de risico’s die ermee gepaard gaan.
Als je besluit om VNC op je productie Linux server te installeren en te draaien, raden we sterk aan om het alleen voor administratieve doeleinden te gebruiken.