Mark Huijser

Pastebin van een webdeveloper

Een veilige verbinding naar je database met een SSH tunnel

2 years ago · 1 MIN READ
#MySQL/MariaDB  #SSH  #Sequel Pro 

Velen van ons gebruiken dagelijks MySQL - of tegenwoordig MariaDB - als database achter je dynamische website, blog of webshop. Als devopper is het enorm handig om met een grafische userinterface gemakkelijk de database te kunnen beheren. Maar hoe doe je dat op een veilige manier ?

Één van mijn favoriete MySQL-clients is Sequel Pro, een krachtige tool die je redelijk eenvoudig kunt instellen om je database over een veilige verbinding (tunnel) te benaderen.

Even de basics over SSH tunneling

Het principe van een SSH-tunnel (ook wel "Portforwarding" genoemd) is vrij eenvoudig: We starten op onze lokale computer een SSH-proces dat op een TCP poort "luistert" naar binnenkomend netwerkverkeer, en sluizen al dat netwerkverkeer via SSH door naar een computer (server) waar dat verkeer eigenlijk naar toe moet , en daarbij moeten we meteen vertellen naar welk ip-nummer en TCP-poort de server dat netwerk-verkeer moet doorsturen.

Voorbeeld

In mijn geval wil ik een verbinding opzetten met mijn database-server die draait op mhuijser.nl op poort 3306. Maar die "poort" is om veiligheidsredenen afgeschermd voor de boze buitenwereld. Ik kan echter wél met behulp van ssh inloggen. Dat geeft mogelijkheden.

ssh -L 3306:127.0.0.1:3306 [email protected]

Bovenstaand commando vertelt mijn computer: Luister naar de lokale TCP-Poort 3306 , stuur al het netwerkverkeer dat daarop binnenkomt naar [email protected], en daar aangekomen moet dat verkeer meteen worden doorgestuurd naar de MySQL database met het IP-nummer 127.0.0.1 (localhost), en die draait daar op TCP-Poort 3306.

Let op bij TCP/IP Versie 6 (ipv6)

Als op je server een ipv6 adres is ingesteld voor "localhost" vervang je 127.0.0.1 door [::1]. Dat ziet er als volgt uit: ssh -L 3306:[::1]:3306 [email protected]

Nu kun je de MySQL database op je lokale computer benaderen alsof 'ie lokaal staat. Via de commandline, bijvoorbeeld (dan moet je uiteraard wel mysql hebben geïnstalleerd): mysql -u root -h 127.0.0.1 -p

Let op de MySQL gebruikersrechten:

"Access denied" ? Zorg ervoor dat de database-user vanaf het ipadres van de SSH server in mag loggen in MySQL.

Zoals beloofd: zo doe je dat in Sequel Pro:

Sequel Pro maakt het je gemakkelijk. SSH tunneling is standaard ingebouwd in deze client. Let erop dat je - als de Database op dezelfde server draait als de SSH-server - bij "MySQL host" dus 127.0.0.1 neerzet , en in geval van ipv6 [::1]

Schermafbeelding 2017-06-21 om 21.24.11.png

···

Mark Huijser


comments powered by Disqus

"When my heart is overwhelmed, lead me to the Rock that is higher than I"

Psalms 61