sql >> Database teknologi >  >> RDS >> Mysql

Opret en SSH-tunnel til MySQL-fjernadgang

Denne vejledning viser dig, hvordan du laver en sikker forbindelse til din eksterne MySQL- eller MariaDB-server fra din lokale computer ved hjælp af en SSH-tunnel . Dette er nyttigt, hvis du vil bruge administrationsværktøjer på din lokale computer til at udføre arbejde på din server.

En SSH-tunnel er en krypteret tunnel lavet gennem en SSH-protokolforbindelse. Du kan bruge en SSH-tunnel til at kommunikere eksternt med MySQL-databasen. Når du har fulgt disse instruktioner, vil du være i stand til at oprette forbindelse til localhost på din arbejdsstation ved hjælp af dit foretrukne MySQL-administrationsværktøj. Forbindelsen videresendes sikkert til din Linode over internettet.

Bemærk MariaDB er en forgrening af MySQL og betragtes som en adrop-in-erstatning. Selvom denne guide henviser til MySQL, gælder den også for MariaDB.

Forudsætninger

  • MySQL er installeret.
  • MySQL er konfigureret til at lytte på localhost (127.0.0.1). Dette er aktiveret som standard.

Sådan får du fjernadgang til MySQL ved at oprette en SSH-tunnel med PuTTY

Dette afsnit viser dig, hvordan du opretter en SSH-tunnel til MySQL på Windows ved hjælp af PuTTY-værktøjet.

Opsætning af tunnelen

Først skal du oprette en grundlæggende forbindelse til din Linode:

  1. DownloadPuTTY.

  2. Gem PuTTY på dit skrivebord.

  3. Dobbeltklik på PuTTY-filen for at begynde - ingen grund til at installere. Du vil se følgende vindue:

  4. Indtast værtsnavnet eller IP-adressen på din Linode i Værtsnavn (eller IP-adresse) felt.

  5. I menuen til venstre skal du gå til Forbindelse -> SSH -> Tunneler .

  6. I Kildeporten indtast 3306 .

  7. I Destination indtast 127.0.0.1:3306 . Se den endelige konfiguration nedenfor:

  8. Klik på Åbn for at starte SSH-sessionen.

  9. Hvis du ikke har logget ind på dette system med PuTTY før, vil du modtage en advarsel svarende til følgende. Bekræft, at denne server er den, du vil oprette forbindelse til, og klik derefter på Ja :

    Bemærk

    Denne advarsel vises, fordi PuTTY vil have dig til at bekræfte, at den server, du logger på, er den, den siger, den er. Det er usandsynligt, men muligt, at nogen kunne aflytte din forbindelse og udgive sig for at være din Linode. For at bekræfte serveren skal du sammenligne nøglefingeraftrykket vist i PuTTY-advarslen - strengen af ​​tal og bogstaver, der starter med ssh-rsa på billedet ovenfor - med din Linodes offentlige nøgle fingeraftryk. For at få din Linodes fingeraftryk skal du logge ind på din Linode via Lish-konsollen (se konsollen fanen i Linode Manager) og udføre følgende kommando:

    ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
    

    Nøglens fingeraftryk skal matche. Når du klikker på Ja , vil du ikke modtage yderligere advarsler, medmindre nøglen til PuTTY ændres af en eller anden grund; typisk bør dette kun ske, hvis du geninstallerer fjernserverens operativsystem. Hvis du modtager denne advarsel igen for den samme Linode, efter at nøglen allerede er blevet cachelagret, bør du ikke stole på forbindelsen og undersøge sagen nærmere.

  10. Send din lokale MySQL-klient til localhost:3306 . Din forbindelse til den eksterne MySQL-server vil blive krypteret gennem SSH, så du kan få adgang til dine databaser uden at køre MySQL på en offentlig IP.

Opret en SSH-tunnel på Mac OS X eller Linux

Dette afsnit viser dig, hvordan du opretter en SSH-tunnel til MySQL på Mac OS X eller Linux.

  1. Installer en MySQL-klient. Installation af MySQL-server leveres færdigpakket med en installation af klienten. For kun at installere klienten:

    MacOS

    brew install --cask mysql-shell
    

    Ubuntu/Debian

    sudo apt install mysql-client
    
  2. Åbn en kommandoprompt og kør følgende kommando for at åbne SSH-tunnelen.

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

    Erstat <[email protected]> med dit SSH-brugernavn og din servers værtsnavn eller IP-adresse. Den lange række af tal i kommandoen viser den lokale IP, den lokale port, den eksterne IP og den eksterne port, adskilt af koloner (: ).

    -L - binder en lokal port til fjernværtsposten.-N - betyder videresendelse af porte.

    Bemærk

    Hvis du allerede kører en lokal MySQL-server på din arbejdsstation, skal du bruge en anden lokal port (3307 er et almindeligt valg). Din nye kommando vil se sådan ud:

    ssh [email protected] -L 3307:127.0.0.1:3306 -N
    
  3. Åbn et nyt terminalvindue. Send din lokale MySQL-klient til 127.0.0.1:3306 med MySQL-serverens brugernavn og adgangskode.

    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 forbindelse til den eksterne MySQL-server vil blive krypteret gennem SSH, så du kan få adgang til dine databaser uden at køre MySQL på en offentlig IP.

  4. Når du er klar til at lukke forbindelsen, skal du udstede en CTRL-C kommando eller luk kommandopromptvinduet. Dette vil lukke SSH-tunnelen.

Persistente SSH-forbindelser

Hvis du har brug for en vedvarende SSH-tunnel, kan du overveje at bruge autossh. autossh starter og overvåger en SSH-forbindelse og genstarter den, hvis det er nødvendigt.

Flere oplysninger

Du ønsker måske at konsultere følgende ressourcer for yderligere oplysninger om dette emne. Selvom disse leveres i håb om, at de vil være nyttige, bemærk venligst, at vi ikke kan stå inde for nøjagtigheden eller aktualiteten af ​​eksternt hostede materialer.

  • Brug af PuTTY
  • MySQL-dokumentation
  • MariaDB-dokumentation
  • autossh

  1. Forstå SQL-datatyper – alt hvad du behøver at vide om SQL-datatyper

  2. Hvordan finder man de dårligst ydende forespørgsler i SQL Server 2008?

  3. Overkompliceret oracle jdbc BLOB-håndtering

  4. Har mysql det, der svarer til Oracles analytiske funktioner?