We hebben veilig toegang tot MySQL op een extern systeem door MySQL via de SSH-tunnel te verbinden. Deze tutorial biedt de stappen die nodig zijn om op afstand verbinding te maken met de MySQL-server via een SSH-tunnel met behulp van Putty op Windows en SSH op Linux-systemen. Het laat zien hoe u de lokale poort van MySQL, d.w.z. 3306, doorstuurt naar de externe poort van MySQL, d.w.z. 3306 via SSH-poort 22 van het externe systeem. Dit zorgt ervoor dat we veilig communiceren met de externe server via poort 22, door de lokale poort 3306 te verbinden met de poort 3306 op de externe server.
Vereisten
Een externe server waarop een MySQL-server is geïnstalleerd. U kunt volgen hoe u MySQL 8 installeert op Ubuntu 20.04 LTS.
Zorg er ook voor dat poort 22 open is en dat poort 3306 wordt geblokkeerd door de firewall op het externe systeem met MySQL-server. Deze tutorial gaat er ook van uit dat de MySQL-server niet op het lokale systeem draait. Dit zorgt ervoor dat poort 3306 op het lokale systeem vrij is voor port forwarding.
We hebben ook SSH-toegang nodig tot het systeem waarop de MySQL-server is geïnstalleerd en draait. We kunnen ofwel de SSH gebruikersnaam en wachtwoord . gebruiken of SSH-gebruikersnaam en de sleutel om verbinding te maken met het externe systeem.
Putty installeren op Windows 10
We kunnen Putty op de Windows-systemen gebruiken om toegang te krijgen tot de MySQL-server die op een externe server is geïnstalleerd. Als je een op Linux gebaseerd systeem gebruikt, kun je naar de SSH-sectie gaan.
Open de officiële downloadpagina van Putty om het MSI-installatieprogramma te downloaden zoals aangegeven in figuur 1.
Afb. 1
We kunnen het uitvoerbare bestand Putty ook gebruiken zonder het te installeren. Scroll naar beneden op de downloadpagina om het uitvoerbare bestand te downloaden.
Start nu Putty. De standaardopties van Putty zouden vergelijkbaar moeten zijn met Fig 2.
Afb. 2
Beveiligde verbinding met MySQL met behulp van Putty
Dit gedeelte bevat de stappen om Putty te gebruiken om veilig verbinding te maken met MySQL via de SSH-tunnel vanaf een extern systeem. Vul nu de gegevens van de externe host in zoals weergegeven in figuur 3.
Afb. 3
Klik ook op de Verbinding -> SSH -> Tunnels zoals gemarkeerd in figuur 3. Vul nu de SSH-poort doorsturen details in zoals getoond in figuur 4. De bronpoort moet worden ingesteld op 3306 en Bestemming moet worden ingesteld op 127.0.0.1:3306 .
Afb. 4
Klik op de Knop Toevoegen na het invullen van de Bronpoort en Bestemming. Het zal de Doorgestuurde poorten . updaten zoals weergegeven in figuur 4. Klik ook op de optie Auth en kies de SSH-sleutel zoals weergegeven in figuur 5. Zorg ervoor dat u de privésleutel hebt gegenereerd met Puttygen.
Afb. 5
Klik nu op de Open-knop om de verbinding te openen. Het zal de beveiligingswaarschuwing voor de eerste keer tonen zoals getoond in Fig 6.
Afb. 6
Klik op de Ja-knop om de verbinding te accepteren. Het zal om de wachtwoordzin vragen voor het geval u deze hebt ingesteld tijdens het genereren van de privésleutel. Bij een succesvolle verbinding worden de details van het externe systeem weergegeven zoals weergegeven in Afb. 7.
Afb. 7
Afgezien van verbinding via SSH, heeft het ook de lokale poort 3306 doorgestuurd naar de poort 3306 op de externe server. Sluit Putty niet omdat het de SSH-tunnel open houdt voor de externe server. Start nu een willekeurige MySQL-client en probeer verbinding te maken met de externe MySQL-server. Ik heb MySQL Workbench gebruikt voor demonstratiedoeleinden. Het startscherm van Workbench zou er ongeveer zo uit moeten zien als in figuur 8. U kunt ook Workbench gebruiken om verbinding te maken met een externe MySQL-server via SSH-tunnel.
Afb. 8
Klik nu op het Plus-pictogram om een nieuwe Lokale verbinding te maken zoals gemarkeerd in Afb. 8. Het toont de opties om verbinding toe te voegen zoals weergegeven in Afb. 9.
Afb. 9
Geef een verbindingsnaam op en bewaar de hostnaam als 127.0.0.1 en poort als 3306, zoals weergegeven in Afb. 9. Klik nu op Verbinding testen om de verbinding met de externe MySQL-server via de SSH-tunnel te testen. Het zal om een wachtwoord vragen, zoals weergegeven in figuur 10, voor het geval u het niet in de kluis hebt opgeslagen.
Afb. 10
Vul nu het wachtwoord in en klik op de OK-knop om de verbinding te testen. Het zou een succesbericht moeten tonen bij geslaagde verbinding, zoals weergegeven in Afb. 11.
Afb. 11
Klik nu op de OK-knop om het verbindingsbericht te sluiten en klik nogmaals op de OK-knop om de verbindingswizard te sluiten. Het zal de verbinding toevoegen aan de verbindingsbibliotheek zoals getoond in Fig. 12.
Afb. 12
Klik nu op de nieuw toegevoegde verbinding. Het zou verbinding moeten maken met de externe server en de databases van de externe MySQL-server moeten weergeven, zoals weergegeven in Afb. 13.
Afb. 13
Nu kunnen we werken op een externe MySQL-server met Workbench op het lokale systeem. Sluit Workbench en Putty ook om de verbinding te beëindigen nadat het werk op de externe MySQL-server is voltooid.
Beveiligde verbinding met MySQL met SSH
We kunnen verbinding maken met de externe MySQL-server door de lokale poort 3306 door te sturen naar de externe poort 3306 met behulp van de SSH-opdracht zoals hieronder weergegeven. Zorg ervoor dat, net als bij de vorige sectie, de lokale poort 3306 vrij is.
Opmerkingen :De onderstaande opdrachten zijn getest op Ubuntu Desktop. De stappen en opdrachten zouden op andere Linux-systemen vergelijkbaar moeten zijn.
# Shutdown local MySQL - Else use a different local port
sudo service mysql stop
# Install MySQL Client - If required
sudo apt install mysql-client
# Port Forwarding - Command
ssh -N -L 3306:127.0.0.1:3306 [USER]@[SERVER_IP]
# OR
ssh -N -L 3306:127.0.0.1:3306 -i [SSH Key] [USER]@[SERVER_IP]
# Port Forwarding - Example
ssh -N -L 3306:127.0.0.1:3306 [email protected]
# OR
ssh -N -L 3306:127.0.0.1:3306 -i example.pem [email protected]
De bovengenoemde commando's openen de SSH-tunnel en verbinden de lokale poort 3306 met de externe poort 3306. Nu kunnen we verbinding maken met de externe MySQL-server met behulp van de MySQL-client. U kunt de vorige sectie raadplegen om MySQL Workbench te gebruiken die op het lokale systeem is geïnstalleerd.
Raadpleeg ook Afb. 14 en Afb. 15 om de SSH-tunnel te openen en verbinding te maken met de externe MySQL-server.
Afb. 14
Afb. 15
Samenvatting
Deze zelfstudie bevatte de stappen die nodig zijn om verbinding te maken met de externe MySQL-server via SSH-tunnel voor Windows- en Linux-systemen.