Den här guiden visar dig hur du gör en säker anslutning till din fjärranslutna MySQL- eller MariaDB-server från din lokala dator med en SSH-tunnel . Detta är användbart om du vill använda administrationsverktyg på din lokala dator för att utföra arbete på din server.
En SSH-tunnel är en krypterad tunnel som görs genom en SSH-protokollanslutning. Du kan använda en SSH-tunnel för att fjärrkommunicera med MySQL-databasen. Efter att ha följt dessa instruktioner kommer du att kunna ansluta till localhost
på din arbetsstation med ditt favoritverktyg för MySQL-hantering. Anslutningen vidarebefordras säkert till din Linode över Internet.
Obs MariaDB är en gaffel av MySQL och anses vara adrop-in-ersättning. Även om den här guiden hänvisar till MySQL, gäller den även för MariaDB.
Förutsättningar
- MySQL är installerat.
- MySQL är konfigurerat att lyssna på
localhost
(127.0.0.1). Detta är aktiverat som standard.
Hur får man åtkomst till MySQL på distans genom att skapa en SSH-tunnel med PuTTY
Det här avsnittet visar hur du skapar en SSH-tunnel till MySQL på Windows med hjälp av PuTTY-verktyget.
Konfigurera tunneln
Först måste du upprätta en grundläggande anslutning till din Linode:
-
Ladda nerPuTTY.
-
Spara PuTTY på skrivbordet.
-
Dubbelklicka på PuTTY-filen för att börja - du behöver inte installera. Du kommer att se följande fönster:
-
Ange värdnamnet eller IP-adressen för din Linode i Värdnamn (eller IP-adress) fältet.
-
I menyn till vänster, gå till Anslutning -> SSH -> Tunnlar .
-
I Källporten fältet anger du
3306
. -
I Destination fältet anger du
127.0.0.1:3306
. Se den slutliga konfigurationen nedan: -
Klicka på Öppna för att starta SSH-sessionen.
-
Om du inte har loggat in på det här systemet med PuTTY tidigare kommer du att få en varning som liknar följande. Verifiera att det är den här servern du vill ansluta till och klicka sedan på Ja :
Obs
Den här varningen visas eftersom PuTTY vill att du ska verifiera att servern du loggar in på är den den säger att den är. Det är osannolikt, men möjligt, att någon kan avlyssna din anslutning och utger sig för att vara din Linode. För att verifiera servern, jämför nyckelfingeravtrycket som visas i PuTTY-varningen - strängen med siffror och bokstäver som börjar med ssh-rsa i bilden ovan - med din Linodes publika nyckel-fingeravtryck. För att få din Linodes fingeravtryck, logga in på din Linode via Lish-konsolen (se konsolen fliken i Linode Manager) och kör följande kommando:
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
Nyckelfingeravtrycken ska matcha. När du klickar på Ja , du kommer inte att få ytterligare varningar om inte nyckeln som presenteras för PuTTY ändras av någon anledning; vanligtvis bör detta bara hända om du installerar om fjärrserverns operativsystem. Om du får den här varningen igen för samma Linode efter att nyckeln redan har cachelagrats bör du inte lita på anslutningen och undersöka saken vidare.
-
Skicka din lokala MySQL-klient till
localhost:3306
. Din anslutning till den fjärranslutna MySQL-servern kommer att krypteras genom SSH, vilket gör att du kan komma åt dina databaser utan att köra MySQL på en offentlig IP.
Skapa en SSH-tunnel på Mac OS X eller Linux
Det här avsnittet visar hur du skapar en SSH-tunnel till MySQL på Mac OS X eller Linux.
-
Installera en MySQL-klient. Installation av MySQL-server kommer förpackad med en installation av klienten. För att endast installera klienten:
MacOS
brew install --cask mysql-shell
Ubuntu/Debian
sudo apt install mysql-client
-
Öppna en kommandotolk och kör följande kommando för att öppna SSH-tunneln.
ssh [email protected] -L 3306:127.0.0.1:3306 -N
Ersätt <[email protected]> med ditt SSH-användarnamn och din servers värdnamn eller IP-adress. Den långa strängen med siffror i kommandot listar den lokala IP-adressen, den lokala porten, fjärr-IP:en och fjärrporten, separerade med kolon (: ).
-L
- binder en lokal port till fjärrvärdposten.-N
- betyder vidarebefordran av portar.Obs
Om du redan kör en lokal MySQL-server på din arbetsstation, använd en annan lokal port (3307 är ett vanligt val). Ditt nya kommando skulle se ut så här:
ssh [email protected] -L 3307:127.0.0.1:3306 -N
-
Öppna ett nytt terminalfönster. Dirigera din lokala MySQL-klient till
127.0.0.1:3306
med MySQL-serverns användarnamn och lösenord.MacOS
mysqlsh --host=127.0.0.1 --port=3306 -u user -p
Ubuntu/Debian
mysql --host=127.0.0.1 --port=3306 -u user -p
Din anslutning till den fjärranslutna MySQL-servern kommer att krypteras genom SSH, vilket gör att du kan komma åt dina databaser utan att köra MySQL på en offentlig IP.
-
När du är redo att stänga anslutningen, utfärda en CTRL-C kommando eller stäng kommandotolksfönstret. Detta kommer att stänga SSH-tunneln.
Beständiga SSH-anslutningar
Om du behöver en beständig SSH-tunnel, överväg att använda autossh. autossh startar och övervakar en SSH-anslutning och startar om den vid behov.
Mer information
Du kanske vill konsultera följande resurser för ytterligare information om detta ämne. Även om dessa tillhandahålls i hopp om att de kommer att vara användbara, vänligen observera att vi inte kan garantera noggrannheten eller aktualiteten hos externt värdmaterial.
- Använda PuTTY
- MySQL-dokumentation
- MariaDB-dokumentation
- autossh