Support

Cloud Servers: Hoe maak ik met SSH verbinding met mijn server?

Support

Wij helpen je verder!

Heb je problemen met het instellen van je mail client? Wil je weten hoe je een virtuele server herstart? Vraag je je af wat de beste kwaliteit is om te streamen? Grote kans dat deze vraag al eens voorbij is gekomen. Op deze pagina behandelen we de meestvoorkomende vragen en problemen. Kom je er alsnog niet uit? Neem dan gewoon contact op met onze servicedesk.

Hoe maak ik met SSH verbinding met mijn server?

Wanneer je bij Net Ground een eigen server hebt draaien dan kan je hier met SSH, Secure Shell, veilig een verbinding mee opzetten. Wij werken alleen met SSH keys en niet met gebruikersnamen en wachtwoorden. Maar hoe genereer je zo'n SSH key pair en hoe verbind je dan?

Putty

In deze handleiding maken we gebruik van PuTTY, je kunt deze downloaden via deze link. PuTTY is een gratis SSH en Telnet cliënt die is gemaakt voor Windows en Unix platformen. Je kunt met PuTTY een SSH verbinding opzetten om vervolgens je server te updaten, logfiles bekijken of services een restart geven.

SSH keys

Het is bij servers die onder ons beheer staan niet mogelijk om met een gebruikersnaam en wachtwoord combinatie in te loggen, dit kan alleen via een SSH key pair.

Je kunt zo'n key pair genereren via de PuTTY Key Generator die je ook kunt vinden op de PuTTY download pagina.

Genereren keys

Volg de volgende stappen om een SSH keypair te genereren, dit kan je doen met puttygen.exe die je hier kunt downloaden.

  1. Start de PuTTY Key Generator.
  2. Klik op de knop 'Generate' om het proces te starten.
  3. Beweeg met je muis over het grijze veld onder de status balk, je zult zien dat die steeds 'groener' wordt.
  4. Je hebt nu een key pair gegenereerd.
  5. Vul bij het veld 'key comment' iets in waardoor je de key kunt herkennen, bijvoorbeeld henk@pc-thuis.
  6. Vul nu een 'Key Passphrase' in, maak deze logischerwijs moeilijk - wachtwoord tips. Dit wachtwoord heb je nodig om je eigen private key te kunnen unlocken.
  7. Sla zowel de public als de private key op via de buttons 'Save public key' en 'Save private key'.

Je hebt nu een SSH key pair gegenereerd. De public key zal de key zijn die je op je eigen server plaatst en de private key is de key die je op je eigen systeem/pc/laptop laat staan.

Geef je private key nooit aan derden!

Verbinden met een SSH key

Wanneer je je SSH keys hebt gegenereerd dan kun je gaan verbinden met je server. Stuur je public key door naar Net Ground zodat wij deze op je server kunnen plaatsen.

Vervolgens kan je een SSH verbinding gaan opzetten via PuTTY. Volg hiervoor de volgende stappen:

  1. Start PuTTY! ;)
  2. Vul in het eerste scherm onder 'Host Name' het IP adres of de hostname in van je eigen server.
  3. De 'Port' moet op '22' staan en de 'Connection Type' op SSH.
  4. Klap in de menustructuur onder 'Connection' de optie 'SSH' uit en klik vervolgens op 'Auth'.
  5. Je kunt hier de private key opgeven die je wilt gebruiken om de verbinding op te zetten, klik op 'Browse' en selecteer die private key file.
  6. Ga weer terug naar de 'Sessie' categorie links bovenin het menu en geef een naam op voor dit profiel, onder 'Saved Sessions'.
  7. Klik vervolgens op 'Save' om deze informatie nu op te slaan.
  8. Je kunt vanaf nu deze sessie aanklikken en vervolgens via de 'Load' button alle informatie automatisch instellen.
  9. Klik op 'Open' om de SSH sessie te starten.
  10. PuTTY zal nu nog eerst vragen om je eigen 'Key Passphrase' die je hebt ingesteld, nadat je deze hebt ingevuld zal de verbinding worden opgezet.

SSH tunnels

SSH tunnels

Als je SSH toegang hebt tot je server, dan kun je SSH-tunnels gebruiken om services op de server te bereiken via je bestaande SSH verbinding. Bijvoorbeeld de MySQL server. Normaal gesproken zou je om je MySQL server met bijvoorbeeld Navicat te bereiken, de firewall geconfigureerd hebben om verkeer van jouw IP adres op port 3306 door te laten (layer3). Daarnaast moeten de MySQL GRANTs aangepast worden om ook jouw IP adres toe te laten tot de MySQL server zelf op applicatie niveau (layer7). MySQL moet ook op de WAN interface van de server een poortje openen (wat geen default is om security redenen, standaard luistert mysqld alleen op localhost/127.0.0.1).

Door SSH-tunnels te gebruiken, vereenvoudigt dit: naast de toegang op port 22 voor SSH, hoeft er niets extra's open in de firewall van de server, en MySQL grants kunnen op localhost blijven staan. Dat impliceert ook dat MySQL dus geen socket op de WAN interface geopend hoeft te hebben.

Als laatst gaat je MySQL verkeer nu 'over' de SSH verbinding die je met Putty al had met de server, en dus is al dat verkeer nu ook voorzien van encryptie.

Het is dus simpeler, minder werk, en veiliger. Tunnels zijn flexibel. Je kunt ze aanmaken en weghalen terwijl Putty al een SSH-sessie met de server heeft. In dit voorbeeld gaan we uit van een bestaande verbinding, en maken we de tunnel dynamisch aan.

Stel, je hebt een MySQL server (IP Adres: 192.168.1.8), met deze GRANT voor een user:

mysql> grant all on db.* to `dbuser`@`localhost` identified by 'wachtwoord';

MySQL luistert alleen op localhost:

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 7930/mysqld

Vanaf een andere computer ergens hebben we een SSH verbinding met deze server, middels Putty.

In Putty, rechts-klik de titelbalk, en klik "Change Settings..."
Klink in de Category links, naar Connection, SSH, Tunnels.

Bij "Source port" vul je in: 3307 (je kunt hier iets kiezen van 1025-65536)
Bij "Destination" vul je in: localhost:3306

Klik dan op Add, met als resultaat:

Klik nu op Apply, en je bent terug in Putty.

Putty heeft nu een socket geopend op jouw computer's localhost, port 3307, en lust dat door over de SSH verbinding, en verbindt dat op de server aan (weer) localhost, port 3306. We noemen hier 2x "localhost", maar de eerste is natuurlijk localhost van jouw computer, en de 2e is localhost vanuit de server's perspectief (de server zelf dus). Door nu op jouw computer met localhost:3307 te connecten, kom je via de SSH-tunnel in verbinding met de MySQL server. De server 'ziet' deze connectie vanaf "localhost" komen, en is dus "trusted" volgens de standaard GRANTS.

Met je MySQL client, kun je nu als volgt verbinden met de MySQL server:

De mensen met ssh op de commandline zetten als volgt deze tunnel op:

shell> ssh -L 3307:localhost:3306 user@hostname

En vervolgens kun je met de mysql client connecten naar je server:

shell> mysql -u user -h localhost -p


Deel dit item: