sql >> Databasteknik >  >> RDS >> Mysql

Skapa en SSH-tunnel för MySQL fjärråtkomst

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:

  1. Ladda nerPuTTY.

  2. Spara PuTTY på skrivbordet.

  3. Dubbelklicka på PuTTY-filen för att börja - du behöver inte installera. Du kommer att se följande fönster:

  4. Ange värdnamnet eller IP-adressen för din Linode i Värdnamn (eller IP-adress) fältet.

  5. I menyn till vänster, gå till Anslutning -> SSH -> Tunnlar .

  6. I Källporten fältet anger du 3306 .

  7. I Destination fältet anger du 127.0.0.1:3306 . Se den slutliga konfigurationen nedan:

  8. Klicka på Öppna för att starta SSH-sessionen.

  9. 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.

  10. 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.

  1. 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
    
  2. Ö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
    
  3. Ö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.

  4. 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

  1. SQL Server Standard Edition High Availability Futures

  2. hur man kontrollerar och ställer in max_allowed_packet mysql-variabel

  3. En jämförelse mellan MySQL Clone Plugin och Xtrabackup

  4. Åtgärda fel 1064 (42000) när du använder MINUS-operatören i MariaDB