VNC instellen. VNC-server of extern bureaublad op Ubuntu

  • zelfstudie

Deze handleiding gaat over het instellen van noVNC voor externe toegang tot Windows-computers.

Waarom geen VNC?

- Windows heeft een "native" tool voor toegang op afstand - Remote Desktop Connection. Maar het is niet beschikbaar in alle versies van Windows - het is bijvoorbeeld niet in de Home-editie.
- Er zijn ook veel VNC-servers en clients voor elke versie van Windows. Maar om ze te gebruiken, moet u een VNC-client installeren. En er zijn momenten waarop je niets kunt zetten (beperking van rechten), of het ongewenst is om geen sporen achter te laten op de computer van iemand anders.
- Er is ook Chrome Remote Desktop, die alleen een browserextensie aan de clientzijde nodig heeft. Maar ik had een geval waarin het Chrome-protocol werd geblokkeerd door de organisatie (bijna alles werd daar geblokkeerd), en noVNC gebruikt gewone HTTP en werkte daarom.

Voor zover ik weet, is noVNC de enige tool waarmee je verbinding kunt maken met een externe computer zonder een client te installeren - er wordt alleen een browser gebruikt.
Er is ook SPICE, maar ik heb er geen server voor Windows voor gevonden.

Als resultaat van deze tutorial kunnen we eenvoudig de link in een browser openen, het wachtwoord invoeren en het externe systeem gebruiken.

Een vereiste is port forwarding of het witte IP-adres van de externe computer. U kunt ook een VNC-repeater gebruiken. Maar dit valt al buiten het bestek van dit artikel.

Algemeen schema

Eerst zetten we een gewone VNC-server op poort 5900.

Zet dan noVNC en WebSockify op poort 5901.

Het doel is om zoiets als dit te worden:


Voer nu de opdrachtprompt uit met beheerdersrechten:


Start WebSockify:

C:\> cd c:\noVNC\websockify c:\noVNC\websockify> websockify.exe 5901 127.0.0.1:5900 --web c:\noVNC\noVNC-master WAARSCHUWING: geen "resource"-module, ondersteuning voor daemoniseren uitgeschakeld WebSocket serverinstellingen: - Luister op:5901 - Flash-beveiligingsbeleidsserver - Webserver. Webroot: c:\noVNC\noVNC-master - Geen SSL/TLS-ondersteuning (geen cert-bestand) - proxy van:5901 naar 127.0.0.1:5900
De eerste parameter hierboven is de poort waarop noVNC zal luisteren: 5901 . Deze poort moet beschikbaar worden gesteld aan klanten.

De tweede parameter is het IP-adres en de poort waar de VNC-server zich bevindt: 127.0.0.1:5900

derde parameter: --web instrueert noVNC om de inhoud van een map te serveren c:\noVNC\noVNC-master via HTTP('s). Standaard geeft noVNC alleen een VNC-websocket, maar met deze optie kunt u een HTTP-server op dezelfde poort hebben.

In map c:\noVNC\noVNC-master hernoem het bestand vnc.html v index.html standaard te geven.

De noVNC-client zou nu beschikbaar moeten zijn op poort 5901:


Probeer ook de noVNC-pagina vanaf een andere computer/smartphone te openen om ervoor te zorgen dat deze van buitenaf toegankelijk is. Zo niet, controleer dan:

Dat uw Windows Firewall geen externe verbindingen naar deze poort blokkeert,
- dat uw router verzoeken naar deze poort correct doorstuurt naar de juiste computer; Google zo nodig op "port forwarding".

We maken verbinding (verbinden), voeren het VNC-wachtwoord in en zien het bureaublad van de externe computer!

Als er iets mis is gegaan, zouden de fouten in onze console moeten verschijnen.

U kunt de noVNC-server stoppen door op Ctrl-C in de console te drukken. De hierboven beschreven configuratie werkt via HTTP (en via WS).

SSL toevoegen met zelfondertekend certificaat

Het toevoegen van SSL is optioneel. U kunt als volgt een zelfondertekend certificaat maken:

Openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem
Voor Windows kan openssl worden gebruikt.

Als resultaat krijgen we het self.pem-bestand, waarnaar moet worden verwezen bij het starten van noVNC:

C:\noVNC\websockify> websockify.exe 5901 127.0.0.1:5900 --web c:\noVNC\noVNC-master --cert=c:\noVNC\self.pem
Nu werken HTTPS en WSS (WebSocket Secure). Voor WSS in de instellingen (Instellingen) moet u Encrypt specificeren. Interessant is dat noVNC dezelfde poort gebruikt voor HTTP en HTTPS - het "weet hoe" onderscheid te maken tussen verzoeken en correct te reageren.

Aangezien het certificaat zelfondertekend is, moet de browser dit certificaat accepteren.

Laten we versleutelen

Ik heb geen instructies om het systeem zo in te stellen dat Let's Encrypt automatisch een specifiek certificaat voor ons systeem genereert. Hiervoor zou noVNC op poort 80 moeten draaien, wat zeker mogelijk is, maar onhandig kan zijn, en een manier vinden om te integreren certbot zodat deze bestanden in de juiste map worden gepubliceerd. Ik denk dat het mogelijk is, maar ik heb het niet gedaan. Als je het af hebt, deel het dan in de opmerkingen.

In mijn geval heb ik al een thuisserver met NGINX en DDNS-naam, die is geconfigureerd om automatisch een certificaat van Lets Encrypt te ontvangen.

U kunt iets soortgelijks voor uzelf uitvoeren. er zijn instructies voor het instellen van Let's Encrypt voor Linux en Windows.

daarom, voor geenVNC Ik gebruik gewoon bestaande pem-bestanden gegenereerd voor nginx.

Let's Encrypt maakt de volgende bestanden aan:

Cert.pem: Het certificaat van uw domein chain.pem: The Let's Encrypt chain-certificaat fullchain.pem: cert.pem en chain.pem gecombineerd privkey.pem: De privésleutel van uw certificaat
Op Ubuntu kun je ze op dit pad vinden: /etc/letsencrypt/live/your_domain_name

Moet kopiëren (samenvoegen) fullchain.pem en privkey.pem in één bestand, laten we het bijvoorbeeld noemen encrypt.pem en dit bestand zullen we gebruiken voor geenVNC.

Dit werkt natuurlijk alleen als: nginx server en geenVNC- op één domein. Poorten kunnen variëren.

En we mogen niet vergeten dat de certificaten maar een paar maanden geldig zijn, en dan moet je de bijgewerkte bestanden kopiëren.

NoVNC toevoegen als een Windows-service

Download het zip-archief en pak de bestanden daar uit zodat ze zich in dezelfde map als het bestand bevinden websockify.exe, dat wil zeggen, in ons geval c:\noVNC\websockify.

Bij het opstarten gebruikt de service de parameters uit het bestand noVNCConfig.ini. Hier is een voorbeeld van mijn configuratie:

5901 127.0.0.1:5900 --web C:\noVNC\noVNC-master --cert=c:\noVNC\encrypt.pem
Maak een nieuwe service in de console die is gestart met beheerdersrechten:

Sc create "noVNC Websocket Server" binPath= "c:\noVNC\websockify\noVNC Websocket Service.exe" DisplayName= "noVNC Websocket Server"
Als u de service moet verwijderen, gaat u als volgt te werk:

Sc verwijder "noVNC Websocket Server"
Open services (Configuratiescherm → Systeembeheer → Services) en start noVNC Websocket Server. U kunt hier ook configureren zodat de service elke keer start met Windows:

bekende problemen

Toetsenbordindeling

Ik ontdekte dat de Russische toetsenbordindeling op een nogal ongebruikelijke manier werkt:
Als de taal van de client is ingesteld op Russisch, worden er helemaal geen toetsaanslagen naar de externe computer verzonden.remote desktop Tags toevoegen |

VNC (Virtual Network Computing) is een systeem voor externe toegang waarmee u het toetsenbord en de muis kunt gebruiken om te communiceren met de desktop-GUI van de externe server. Met zijn hulp kunt u bestanden, software en instellingen van een externe server beheren zonder toegang tot de opdrachtregel.

Deze handleiding helpt je bij het installeren van VNC op een Ubuntu 16.04 Virtual Private Server en bij het opzetten van een beveiligde verbinding met behulp van een SSH-tunnel. De VNC-server maakt gebruik van TightVNC, een snel en lichtgewicht pakket voor afstandsbediening dat ervoor zorgt dat alles blijft draaien, zelfs op traag internet.

Vereisten

  • Een geconfigureerde Ubuntu 16.04-server (zie hiervoor).
  • Niet-rootgebruiker met sudo-toegang.
  • Een lokale computer met een vooraf geïnstalleerde VNC-client die VNC-verbindingen via een SSH-tunnel ondersteunt. Windows-gebruikers kunnen TightVNC, RealVNC of UltraVNC installeren. Mac OS X-gebruikers kunnen het ingebouwde Screen Sharing-pakket gebruiken of platformonafhankelijke applicaties gebruiken (zoals RealVNC). Linux-gebruikers kunnen kiezen uit vinagre, krdc, RealVNC, TightVNC, enz.

Stap 1: De desktopomgeving en VNC-server installeren

Standaard worden Ubuntu 16.04-servers geleverd zonder een vooraf geïnstalleerde grafische desktopomgeving en een VNC-server. Daarom moet u deze componenten eerst installeren. Deze handleiding gebruikt de Xfce- en TightVNC-pakketten die beschikbaar zijn in de officiële Ubuntu-repository.

Om de opgegeven pakketten op de server te installeren, voert u het volgende in:

sudo apt install xfce4 xfce4-goodies tightvncserver

Om de initiële configuratie van de VNC-server te voltooien nadat deze is geïnstalleerd en een sterk wachtwoord te kiezen, gebruikt u de opdracht vncserver.

De opdracht zal u vragen om een ​​wachtwoord te selecteren en te bevestigen, evenals een wachtwoord om te bekijken (optioneel). Gebruikers die toegang krijgen tot VNC met een browserwachtwoord, kunnen VNC niet bedienen met een muis of toetsenbord. Met dit wachtwoord kunt u indien nodig VNC aan andere gebruikers demonstreren.

De opdracht vncserver voltooit de initiële VNC-configuratie en maakt de configuratiebestanden.

Stap 2: De VNC-server instellen

De eerste stap is het definiëren van de opdrachten die de VNC-server bij het opstarten zal uitvoeren. Deze commando's zouden in het xstartup-bestand in de .vnc-map moeten staan, die is opgeslagen in de thuismap van de huidige gebruiker. Het opstartscript is gemaakt door het vncserver-team, maar moet worden aangepast om met Xfce te communiceren.

De eerste keer dat VNC start, gebruikt het poort 5901. VNC noemt deze poort:1. VNC kan andere instanties op andere poorten uitvoeren, die :2, :3, enz. zullen heten.

Als u de VNC-serverinstellingen wilt wijzigen, moet u de instantie die poort 5901 gebruikt, stoppen.

vncserver -kill:1

De opdracht retourneert het volgende bericht (PID zal anders zijn):

Het doden van Xtightvnc-proces-ID 17648

Maak een back-up van het xstartup-bestand:

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Maak dan een nieuw xstartup-bestand aan:

nano ~/.vnc/xstartup

Plak de volgende opdrachten erin, die automatisch worden uitgevoerd wanneer de VNC-server start. Sla het bestand op en sluit het.

~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4&

Met het eerste commando, xrdb $HOME/.Xresources, leest de VNC-server GUI het .Xresources-bestand. In het .Xresources-bestand kan de gebruiker enkele instellingen van het grafische bureaublad wijzigen (terminalkleuren, cursorthema's, lettertypen aanpassen). Het tweede commando start eenvoudig Xfce, dat alle grafische software bevat die nodig is om de server te beheren.

Nu moet je de rechten op het bestand overdragen:

sudo chmod +x ~/.vnc/xstartup

Start VNC opnieuw:

Tijdens het opstarten keert de server terug:

Nieuwe "X" desktop is uw_server_name.com:1
Toepassingen starten die zijn gespecificeerd in /home/8host/.vnc/xstartup
Logbestand is /home/8host/.vnc/liniverse.com:1.log

Stap 3: Het VNC-bureaublad testen

Nu moet u ervoor zorgen dat de VNC-server correct is geconfigureerd.

Maak een SSH-verbinding op de lokale machine die wordt omgeleid naar de localhost van de VNC-server. U kunt hiervoor de Linux- of OS X-terminal gebruiken.

ssh -L 5901:127.0.0.1:5901 -N -f -l gebruikersnaam server_ip_address

Opmerking: Vervang gebruiker en server_ip_address door een gebruikersnaam met sudo-toegang en uw IP-adres.

Als u een grafische SSH-client gebruikt (zoals PuTTY), gebruik dan server_ip_address als het IP-adres van de verbinding en specificeer vervolgens localhost:5901 in uw SSH-tunnelinstellingen.

Nu kunt u de VNC-client gebruiken om verbinding te maken met de server. Hiervoor moet je geauthenticeerd zijn. Voer het wachtwoord in dat is ingesteld in sectie 1.

Daarna verschijnt het standaard Xfce-bureaublad op het scherm.

U hebt toegang tot de bestanden in uw thuismap met behulp van een bestandsbeheerder of de opdrachtregel.

Stap 4: Maak een VNC-servicebestand

Nu moeten we de VNC-server configureren als een systeemservice.

Maak een nieuw bestand /etc/systemd/system/ [e-mail beveiligd]:

sudo nano /etc/systemd/system/ [e-mail beveiligd]

Kopieer en plak de volgende code erin:

/etc/systemd/system/ [e-mail beveiligd]
Description=Start TightVNC-server bij opstarten
After=syslog.target netwerk.target
Type=vorken
Gebruiker=8host
PAMName=login
PIDFile=/home/8host/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill:%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -diepte 24 -geometrie 1280x800:%i
ExecStop=/usr/bin/vncserver -kill:%i
WantedBy=multi-user.target

Opmerking: Voer uw gebruikersnaam in in plaats van 8host.

Sla het bestand op en sluit het.

Start de daemon opnieuw:

sudo systemctl daemon-reload

Voeg het nieuwe bestand toe:

sudo systemctl inschakelen [e-mail beveiligd]

Stop de huidige VNC-serverinstantie als deze nog actief is:

vncserver -kill:1

Probeer het nu te starten zoals elke andere systemd-service:

sudo systemctl start [e-mail beveiligd]

Controleer de status om er zeker van te zijn dat de server actief is:

sudo systemctl-status [e-mail beveiligd]

Als de server actief is, retourneert de opdracht:

[e-mail beveiligd]- TightVNC-server op Ubuntu 16.04
Geladen: geladen (/etc/systemd/system/ [e-mail beveiligd]; ingeschakeld; vooraf ingestelde leverancier: ingeschakeld)
Actief: actief (actief) sinds ma 2016-04-25 03:21:34 EDT; 6s geleden
Proces: 2924 ExecStop=/usr/bin/vncserver -kill:%i (code=exited, status=0/SUCCESS)
...
systemd: TightVNC-server starten op Ubuntu 16.04...

systemd: pam_unix(login:session): sessie geopend voor gebruiker finid door (uid=0)
systemd: TightVNC-server gestart op Ubuntu 16.04.

Gevolgtrekking

Op de Ubuntu 16.04-server is nu een beveiligde VNC-server geïnstalleerd. Het kan worden gebruikt om bestanden, programma's en instellingen van een externe server te beheren.

Trefwoorden: ,

VNC (staat voor Virtual Network Computing) is een systeem waarmee u een toetsenbord en muis kunt gebruiken om te communiceren met een grafische gebruikersinterface op een externe server. Dit systeem maakt het beheer van bestanden, software en instellingen op een externe server mogelijk voor gebruikers die zich ongemakkelijk voelen bij het werken met opdrachtregelprogramma's.

In dit artikel zullen we u door het installatieproces van VNC leiden op een server met Ubuntu 16.04 en hoe u een veilige verbinding met die server tot stand kunt brengen met behulp van een SSH-tunnel. Voor de VNC-server gebruiken we TightVNC, een snel en lichtgewicht pakket voor toegang op afstand. Dankzij dit product werkt onze VNC-verbinding betrouwbaar, zelfs op een trage internetverbinding.

Voor installatie:

Om de instructies in dit artikel te volgen, hebt u het volgende nodig:

    Een Ubuntu 16.04-druppel die is geconfigureerd volgens de stappen in , inclusief het maken van een niet-rootgebruiker met sudo-rechten.

    Een lokale computer met een VNC-client die verbindingen via een SSH-tunnel ondersteunt. Als u Windows gebruikt, kunt u TightVNC, RealVNC of UltraVNC gebruiken. Mas OS X-gebruikers kunnen het ingebouwde hulpprogramma Screen Sharing gebruiken of een platformonafhankelijke applicatie zoals RealVNC gebruiken. Linux-gebruikers hebben een ruime keuze: vinagre, krdc, RealVNC, TightVNC, etc.

Stap 1 — Desktopomgeving en VNC-server installeren

Standaard hebben Ubuntu 16.04-druppels geen grafische desktopomgeving of VNC-server geïnstalleerd, dus we beginnen met het installeren ervan. We zullen de nieuwste Xfce-desktopomgevingpakketten en het TightVNC-pakket installeren vanuit de Ubuntu-repositories.

Installeer de Xfce- en TightVNC-pakketten op uw server.

  • sudo apt install xfce4 xfce4-goodies tightvncserver

Om de initiële configuratie van de VNC-server te voltooien nadat deze is geïnstalleerd, gebruikt u de opdracht vncserver om een ​​sterk wachtwoord in te stellen.

  • vncserver

U wordt gevraagd een wachtwoord in te voeren en te bevestigen, en een wachtwoord op te geven om te bekijken. Gebruikers die een browse-wachtwoord gebruiken, kunnen niets doen met het toetsenbord en de muis op de VNC-machine. Dit kan handig zijn om iets op je VNC-server aan andere mensen te demonstreren, het hoeft niet.

Het uitvoeren van vncserver voltooit de VNC-configuratie door standaardconfiguratiebestanden te maken en informatie te creëren om verbinding te maken met onze server. Met deze pakketten geïnstalleerd, kunnen we beginnen met het configureren van onze server.

Stap 2 — De VNC-server instellen

Laten we eerst de opdrachten specificeren die de VNC-server moet uitvoeren bij het opstarten. Deze opdrachten worden gegeven in het xstartup-configuratiebestand in de .vnc-subdirectory van uw homedirectory. Het opstartscript is gemaakt tijdens de vncserver-opdracht in de vorige stap, nu zullen we enkele opdrachten wijzigen om met Xfce te werken.

De eerste keer dat u VNC start, wordt standaard de serverinstantie gestart op poort 5901. Deze poort wordt de weergavepoort genoemd en heeft in VNC de aanduiding: 1 . VNC kan veel instanties op andere poorten draaien, zoals :2 , :3 , enzovoort. Onthoud bij het werken met VNC-servers dat weergavepoortnummer:X op poort 5900+X draait.

Aangezien we wijzigingen gaan aanbrengen in de VNC-serverconfiguratie, moeten we eerst de serverinstantie stoppen die op poort 5901 draait.

  • vncserver -kill:1

De uitvoer moet er ongeveer uitzien als de proces-ID:

Het doden van Xtightvnc-proces-ID 17648

Voordat we wijzigingen aanbrengen in het nieuwe xstartup-bestand, maken we eerst een reservekopie van het originele bestand.

  • mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Laten we nu een nieuw xstartup-bestand maken met nano of een andere teksteditor.

  • nano ~/.vnc/xstartup

Plak deze opdrachten in een bestand om ze automatisch uit te voeren wanneer de VNC-server start of opnieuw wordt opgestart, sla het bestand vervolgens op en sluit het.

#!/bin/bash xrdb $HOME/.Xresources startxfce4 &

De eerste opdracht van het xrdb-bestand $HOME/.Xresources vertelt het VNC GUI-framework om een ​​aangepast .Xresources-bestand te gebruiken. Het .Xresources-bestand slaat bepaalde aangepaste bureaubladinstellingen op, zoals terminalkleuren, cursorthema, lettertypeweergave. De tweede opdracht vertelt de server om Xfce te starten, waarmee u uw server comfortabel kunt beheren.

Laten we het bestand uitvoerbaar maken zodat de VNC-server deze instellingen kan gebruiken.

  • sudo chmod +x ~/.vnc/xstartup

Laten we nu de VNC-server opnieuw opstarten.

  • vncserver

De server zou opnieuw moeten opstarten en iets soortgelijks als de console moeten uitvoeren:

Nieuwe "X" desktop is uw_server_name.com:1 Toepassingen starten gespecificeerd in /home/sammy/.vnc/xstartup Logbestand is /home/sammy/.vnc/liniverse.com:1.log

Stap 3 — Het VNC-bureaublad testen

Laten we nu de verbinding met uw VNC-server controleren.

Laten we eerst een SSH-verbinding maken op uw lokale computer om een ​​veilige VNC-verbinding tot stand te brengen. U kunt dit doen vanaf de terminal op Linux of OS X met de volgende opdracht. Vergeet niet gebruikersnaam en server_ip_address te vervangen door uw sudo-gebruikersnaam en het IP-adres van uw server.

  • ssh -L 5901:127.0.0.1:5901 -N -f -l gebruikersnaam server_ip_address

Als u een grafische SSH-client zoals PuTTY gebruikt, stelt u server_ip_address in als het IP-adres van de verbinding en stelt u ook localhost:5901 in als de doorstuurpoort in de SSH-verbindingsinstellingen van uw client.

Na een succesvolle verbinding ziet u het standaard Xfce-bureaublad. Het zou er zo uit moeten zien:

U kunt toegang krijgen tot bestanden in uw thuismap met behulp van een bestandsbeheerder of vanaf de opdrachtregel:

Stap 4 — Het VNC-servicebestand maken

Laten we eerst een eenheidsbestand /etc/systemd/system/ maken [e-mail beveiligd] met je teksteditor:

Kopieer en plak de volgende inhoud erin. Zorg ervoor dat u de veldwaarde wijzigt gebruiker en gebruikersnaam in het veld PIDFILE naar jouw waarden.

/etc/systemd/system/ [e-mail beveiligd]

Description=Start TightVNC-server bij opstarten After=syslog.target network.target Type=forking User=sammy PAMName=login PIDFile=/home/sammy /.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill:%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -diepte 24 -geometrie 1280x800:%i ExecStop=/usr/bin/vncserver -kill:%i WantedBy=multi-user.target

  • sudo systemctl daemon-reload

Activeer het eenheidsbestand.

Stop de huidige VNC-serverinstantie als deze actief is.

  • vncserver -kill:1

Zorg ervoor dat de service wordt uitgevoerd met deze opdracht:

Als de lancering goed is verlopen, zou de uitvoer er ongeveer zo uit moeten zien:

Naam Conclusie

[e-mail beveiligd]- TightVNC-server op Ubuntu 16.04 Geladen: geladen (/etc/systemd/system/ [e-mail beveiligd]; ingeschakeld; vooraf ingestelde leverancier: ingeschakeld) Actief: actief (actief) sinds ma 2016-04-25 03:21:34 EDT; 6s geleden Proces: 2924 ExecStop=/usr/bin/vncserver -kill:%i (code=exited, status=0/SUCCESS) ... systemd: TightVNC-server starten op Ubuntu 16.04... systemd: pam_unix (login:session ): sessie geopend voor gebruiker finid door (uid=0) systemd: pam_unix(login:session): sessie geopend voor gebruiker finid door (uid=0) systemd: TightVNC-server gestart op Ubuntu 16.04.

Gevolgtrekking

U hebt nu een VNC-server geïnstalleerd en geconfigureerd op uw Ubuntu 16.04-server. U kunt uw bestanden, software en instellingen beheren met een eenvoudige en vertrouwde grafische gebruikersinterface.

Voor de installatie hebben we een server of een externe computer nodig, een lokale computer met een VNC-client die verbinding via een SSH-tunnel ondersteunt. Voor Windows-gebruikers raden we RealVNC, UltraVNC of TightVNC aan. Op Mac OS kunt u het standaard hulpprogramma Scherm delen gebruiken of andere VNC-toepassingen in de app store installeren. Linux-gebruikers hebben een bredere selectie van programma's zoals krdc, vinagre, TightVNC, RealVNC, Remmina en meer.

Desktopomgeving en VNC-server installeren

Standaard hebben Ubuntu 16.04-afbeeldingen geen grafische desktop en VNC-server, die afzonderlijk moeten worden geïnstalleerd. Laten we eerst de nieuwste Xfce-desktopomgevingpakketten en het TightVNC-pakket installeren vanuit de Ubuntu-repositories.

Installeer op de bestelde server de Xfce- en TightVNC-pakketten.

$ sudo apt install xfce4 xfce4-goodies tightvncserver

Om de initiële configuratie van de VNC-server te voltooien nadat deze is geïnstalleerd, gebruikt u de opdracht vncserver om een ​​sterk wachtwoord in te stellen.

$vncserver

U wordt gevraagd een wachtwoord in te voeren en te bevestigen, evenals een wachtwoord om te bekijken. Gebruikers die een browse-wachtwoord gebruiken, kunnen niets doen met het toetsenbord en de muis op de VNC-machine. Dit kan handig zijn om iets op uw VNC-server aan andere mensen te demonstreren.

Prestatie vncserver voltooit de VNC-configuratie door standaardconfiguratiebestanden te maken en informatie te creëren om verbinding te maken met onze server. Nadat u deze pakketten hebt geïnstalleerd, kunt u de server configureren.

Een VNC-server instellen

Laten we eerst de opdrachten specificeren die de VNC-server moet uitvoeren bij het opstarten. Deze commando's worden gespecificeerd in het configuratiebestand xstartup in een submap .vnc uw thuismap. Het opstartscript is gemaakt tijdens de uitvoering van de opdracht vncserver in de vorige stap zullen we nu enkele commando's wijzigen om met Xfce te werken.

De eerste keer dat u VNC start, wordt standaard de serverinstantie gestart op poort 5901. Deze poort wordt de weergavepoort genoemd en heeft in VNC de aanduiding: 1. VNC kan veel instanties op andere poorten draaien, zoals :2, :3, enzovoort. Onthoud bij het werken met VNC-servers dat weergavepoortnummer:X op poort 5900 X draait.

Aangezien we wijzigingen gaan aanbrengen in de VNC-serverconfiguratie, moeten we eerst de serverinstantie stoppen die op poort 5901 draait.

$vncserver -kill:1

De uitvoer moet er ongeveer uitzien als de proces-ID:

Gevolgtrekking
Het doden van Xtightvnc-proces-ID 17648

Voordat we wijzigingen aanbrengen in het nieuwe xstartup-bestand, maken we eerst een reservekopie van het originele bestand.

$ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Laten we nu een nieuw xstartup-bestand maken met nano of een andere teksteditor.

$ nano ~/.vnc/xstartup

Plak deze opdrachten in een bestand om ze automatisch uit te voeren wanneer de VNC-server start of opnieuw wordt opgestart, sla het bestand vervolgens op en sluit het.

~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4&

Eerste bestandscommando xrdb $HOME/.Xresources vertelt het VNC GUI-framework om een ​​aangepast .Xresources-bestand te gebruiken. Bestand .Xbronnen slaat bepaalde op, zoals terminalkleuren, cursorthema, lettertypeweergave. De tweede opdracht vertelt de server om Xfce te starten, waarmee u uw server comfortabel kunt beheren.

Laten we het bestand uitvoerbaar maken zodat de VNC-server deze instellingen kan gebruiken.

$ sudo chmod x ~/.vnc/xstartup

Laten we nu de VNC-server opnieuw opstarten.

$vncserver

De server zou opnieuw moeten opstarten en iets soortgelijks als de console moeten uitvoeren:

Gevolgtrekking
Nieuwe "X" desktop is uw_server_name.com:1
Toepassingen starten gespecificeerd in /home/sammy/.vnc/xstartup
Logbestand is /home/sammy/.vnc/liniverse.com:1.log

VNC-desktoptesten

Laten we eerst een SSH-verbinding maken op de lokale computer om een ​​veilige verbinding met VNC tot stand te brengen. U kunt dit doen vanaf de terminal op Linux of OS X met de volgende opdracht. Vergeet niet te vervangen gebruikersnaam en server IP adres naar uw gebruikersnaam met sudo-rechten en het IP-adres van uw server.

$ ssh -L 5901:127.0.0.1:5901 -N -f -l gebruikersnaam server_ip_address

Als u een grafische SSH-client zoals PuTTY gebruikt, stelt u in server IP adres als het IP-adres van de verbinding, en ook set localhost:5901 als de doorstuurpoort in de SSH-verbindingsinstellingen van uw klant.

Vervolgens kunt u uw VNC-client gebruiken om een ​​verbinding met de VNC-server tot stand te brengen op: localhost:5901 . U wordt gevraagd om te verifiëren. Gebruik het wachtwoord dat u in de eerste stap hebt ingesteld.

Na een succesvolle verbinding ziet u het standaard Xfce-bureaublad. Het zou er zo uit moeten zien:

U hebt nu volledige toegang tot serverbeheer en bestanden in uw thuismap.

Een VNC-servicebestand maken

Laten we eerst een eenheidsbestand /etc/systemd/system/ maken met uw teksteditor:

$ sudo nano /etc/systemd/system/

Kopieer en plak de volgende inhoud erin. Zorg ervoor dat u de waarde van het veld Gebruiker en de gebruikersnaam in het veld PIDFILE wijzigt in uw waarden.

$ /etc/systemd/system/

Description=Start TightVNC-server bij opstarten
After=syslog.target netwerk.target


Type=vorken
Gebruiker=sammy
PAMName=login
PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill:%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -diepte 24 -geometrie 1280x800:%i
ExecStop=/usr/bin/vncserver -kill:%i


WantedBy=multi-user.target

$ sudo systemctl daemon-reload

Activeer het eenheidsbestand.

$ sudo systemctl inschakelen

Stop de huidige VNC-serverinstantie als deze actief is.

$ sudo systemctl start

Zorg ervoor dat de service wordt uitgevoerd met deze opdracht:

$ sudo systemctl-status >

Als de lancering goed is verlopen, zou de uitvoer er ongeveer zo uit moeten zien:

Naam Conclusie
Dit e-mailadres wordt beveiligd tegen spambots. U heeft Javascript nodig om het te kunnen zien.- TightVNC-server op Ubuntu 16.04
Geladen: geladen (/etc/systemd/system/ ; ingeschakeld; vooraf ingestelde leverancier: ingeschakeld)
Actief: actief (actief) sinds ma 2016-04-25 03:21:34 EDT; 6s geleden
Proces: 2924 ExecStop=/usr/bin/vncserver -kill:%i (code=exited, status=0/SUCCESS) ... systemd: TightVNC-server starten op Ubuntu 16.04...
systemd: pam_unix(login:session): sessie geopend voor gebruiker finid door (uid=0)
systemd: TightVNC-server gestart op Ubuntu 16.04.

Klaar! U heeft een VNC-server kunnen installeren en instellen op uw Ubuntu 16.04-server. Vanaf nu kunt u bestanden, software en instellingen beheren via een vertrouwde grafische interface.

Hoewel de Raspberry Pi prima werkt met een monitor of tv met een HDMI-kabel, zijn er vaak situaties waarin een monitor niet nodig is en het voldoende is om het bureaublad op afstand vanaf een andere computer te zien. In dit geval zal VNC ons helpen. Overigens kunnen de meeste taken op afstand worden opgelost, zoals het programmeren of het instellen van het besturingssysteem.
Wat hebben we nodig?

Er wordt aangenomen dat het besturingssysteem is geïnstalleerd op de Raspberry Pi (een speciale versie van de Linux-distributie van Debian) en dat Windows 7 op de externe computer is geïnstalleerd.Om dit te doen, moet u een soort VNC-client voor Windows installeren , zoals UltraVNC - het is best handig en gratis.
UltraVNC-downloadpagina

Zodra de VNC-server actief is, is de UltraVNC-client voldoende om op afstand verbinding te maken met de Raspberry Pi. Als we VNC echter ook op afstand configureren, hebben we bovendien een SSH-client nodig - het gratis PuTTY-programma.
PuTTY-downloadpagina

Het laatste wat we nodig hebben is het IP-adres van je Raspberry Pi. Als er een statisch adres aan is toegewezen, is dit voldoende. Als je weet hoe je het IP-adres op je router moet opzoeken, dan is dit ook voldoende. Als het adres niet bekend is en er is geen manier om het te zien, dan heb je een programma nodig om IP-adressen op het netwerk te scannen. Advanced IP Scanner is hier zeer geschikt voor, het scant het lokale netwerk en toont een lijst van alle apparaten met het IP-adres van elk. Meestal is het niet moeilijk om het adres van de Raspberry Pi te bepalen, in de lijst heeft het de naam "raspberrypi" of iets dergelijks.
Downloadpagina voor geavanceerde IP-scanner

In het geval van een router is het meestal voldoende om naar de lijst met aangesloten apparaten te kijken, Raspberry Pi kan op dezelfde manier worden bepaald als hierboven beschreven. Helaas is het niet mogelijk om in het kader van dit artikel nader te beschrijven hoe dit moet - alle routers verschillen enigszins van elkaar.

SSH uitvoeren op Raspberry Pi

Laten we beginnen met wat SSH is. Dit is een programma dat op het Linux-besturingssysteem kan worden uitgevoerd en waarmee u op afstand toegang hebt tot de Raspberry Pi-console (opdrachtregel). Hiermee kunt u op afstand elk programma uitvoeren of een opdracht uitvoeren op de opdrachtregel met behulp van de SSH-client - PuTTY.

De SSH-server is standaard uitgeschakeld in Raspbian, dus deze moet eerst worden gestart. Om dit te doen, moet je de Raspberry Pi aansluiten op een monitor of tv en er een USB-toetsenbord op aansluiten. Er zijn twee manieren om een ​​SSH-server te starten. De eenvoudigere is om het raspi-config-programma te gebruiken. Om dit te doen, moet u de opdracht typen en het item selecteren " ssh Ssh-server in- of uitschakelen» in het voorgestelde menu:

Een andere manier is om het commando in te voeren sudo /etc/init.d/ssh start zoals hieronder:

Het verschil is dat we bij de eerste methode, met behulp van het raspi-config-programma, niet alleen de SSH-server starten, maar deze ook toevoegen aan het opstarten van het besturingssysteem, wat misschien niet erg goed is als de SSH-server niet helemaal nodig is de tijd. In het tweede geval voeren we het alleen uit tot de volgende herstart.

Ten slotte zullen we een manier beschrijven om een ​​SSH-server te starten zonder een monitor en toetsenbord te gebruiken. Om dit te doen, moet u de SD-kaart verwijderen waarop Rasbian is geïnstalleerd, deze in de kaartlezer plaatsen en aansluiten op een computer met Windows.
De Raspberry Pi SD-kaart heeft een kleine partitie die is geformatteerd in een Fat32-systeem dat Windows begrijpt. Dit gedeelte bevat enkele configuratiebestanden. De inhoud van de SD-kaart ziet er als volgt uit:

Om ervoor te zorgen dat de SSH-server wordt gestart, moet u het bestand boot_enable_ssh.rc hernoemen naar boot.rc:

Plaats nu gewoon de SD-kaart terug in de Raspberry Pi en zet hem aan. De SSH-server wordt gestart!

Verbinding maken via SSH

Zoals hierboven vermeld, moet u eerst de VNC-server starten om op afstand verbinding te maken met de Raspberry Pi via VNC. Hieronder ziet u hoe u deze procedure ook op afstand kunt uitvoeren. Om dit te doen, heb je een SSH-client nodig - PuTTY. Na het downloaden van het PuTTY-programma, hoeft u alleen maar het resulterende bestand uit te voeren, er is geen installatie vereist. Het volgende venster wordt geopend:

Voer het IP-adres in dat u aan het begin vindt in het veld Hostnaam. Dan drukken we op de knop Openen. Zodra PuTTY verbinding heeft gemaakt met de SSH-server, wordt een terminalvenster geopend en wordt om inloggegevens gevraagd (standaard gebruiker pi met wachtwoord raspberry):

Zodra de juiste inloggegevens zijn ingevoerd, verschijnt er een opdrachtprompt. Hier kunt u elk Raspberry Pi-commando invoeren:

Een VNC-server opzetten via SSH

Nu de verbinding tot stand is gebracht, moeten we de VNC-server starten. Als u de server voor de eerste keer start, moet u waarschijnlijk eerst de installatie voltooien. De Raspberry Pi zou internettoegang moeten hebben, omdat je deze nodig hebt om de VNC-server in te stellen. Voer hiervoor de opdracht uit:
sudo apt-get install tightvncserver
Zoals hierboven vermeld, voert PuTTY de opdrachten uit die rechtstreeks op de Raspberry Pi zijn ingevoerd, dus de bovenstaande opdracht zal een VNC-server op uw computer installeren.
Houd er rekening mee dat u tijdens de installatie wordt gevraagd om het programma zonder authenticatie te installeren (Deze pakketten installeren zonder verificatie?). U moet deze vraag met "y" beantwoorden.

Nadat de installatie is voltooid, moet de VNC-server worden gestart. Gebruik hiervoor het commando vncserver:1 -geometrie 1280x800 -diepte 16 -pixelformaat rgb565

Dit commando startte de VNC-server! In dit geval betekent dit dat er een virtuele X-sessie (een virtuele weergave van de Raspberry Pi-desktop) actief is, precies hetzelfde als het startx-commando bij het opstarten met een aangesloten monitor. Wanneer u nu de VNC-client start en verbinding maakt, wordt u verbonden met deze virtuele desktop.

Het belangrijkste onderdeel van dit commando is de parameter :1 . Het specificeert het poortnummer waarop het VNC-proces zal worden uitgevoerd. Het poortnummer kan van alles zijn, maar je moet het onthouden, je hebt het nodig bij het verbinden. Een andere belangrijke parameter is de resolutie (in dit geval de grootte) van de virtuele desktop. Het kan door iedereen worden opgegeven, maar u moet niet meer opgeven dan de werkelijke resolutie van de computer van waaruit toegang op afstand wordt uitgevoerd.

De eerste keer dat u VNC start, zal de server u vragen om een ​​wachtwoord in te voeren. Dit wachtwoord is nodig wanneer u verbinding maakt met een extern bureaublad.

Het tweede wachtwoord waar de VNC-server om vraagt, is het alleen-lezen wachtwoord. Als u dit wachtwoord invoert bij het verbinden, kunt u het virtuele bureaublad zien, maar het toetsenbord en de muis zijn uitgeschakeld.

Verbinding maken met UltraVNC

Nadat u de VNC-server hebt gestart, is het laatste wat u hoeft te doen er op afstand verbinding mee te maken. Voer UtlraVNC uit, voer het IP-adres, poortnummer (1) in en klik op de knop Verbinden.
En nu - alles is klaar!

Belangrijke notitie! De afbeelding van het externe bureaublad kan verschillen, afhankelijk van de inloggegevens waaronder de vncserver is gestart. Wanneer u werkt onder de inloggegevens van een gewone gebruiker, d.w.z. zoals hierboven, ziet het bureaublad er normaal uit. Aan de andere kant, als vncserver als root wordt uitgevoerd met de opdracht sudo, ziet het bureaublad eruit als de onderstaande afbeelding. Hetzelfde geldt trouwens voor het startx-commando als je direct (lokaal) met de Raspberry Pi werkt.