sql >> Databasteknik >  >> RDS >> Mysql

Fjärråtkomst till MySQL-server via SSH-tunnel

Vi kan säkert komma åt MySQL på ett fjärrsystem genom att ansluta MySQL över SSH-tunneln. Denna handledning innehåller stegen som krävs för att fjärransluta till MySQL-servern via SSH-tunneln med Putty på Windows och SSH på Linux-system. Den visar hur man vidarebefordrar den lokala porten för MySQL, dvs. 3306, till fjärrporten för MySQL, dvs. 3306, via SSH-port 22 på fjärrsystemet. Detta säkerställer att vi kommunicerar säkert med fjärrservern över port 22, genom att ansluta den lokala porten 3306 till porten 3306 på fjärrservern.

Förutsättningar

En fjärrserver med MySQL-server installerad på den. Du kan följa Hur man installerar MySQL 8 på Ubuntu 20.04 LTS.

Se också till att port 22 är öppen och port 3306 är blockerad av brandväggen på fjärrsystemet som har MySQL-server. Denna handledning förutsätter också att MySQL-servern inte körs på det lokala systemet. Detta säkerställer att port 3306 på det lokala systemet är ledig för portvidarebefordran.

Vi behöver också SSH-åtkomst till systemet där MySQL-servern är installerad och körs. Vi kan antingen använda SSH-användarnamnet och lösenordet eller SSH-användarnamn och nyckeln för att ansluta till fjärrsystemet.

Installera Putty på Windows 10

Vi kan använda Putty på Windows-systemen för att komma åt MySQL-servern installerad på en fjärrserver. Om du använder ett Linuxbaserat system kan du gå till SSH-sektionen.

Öppna den officiella nedladdningssidan för Putty för att ladda ner MSI-installationsprogrammet som markerats i Fig. 1.

Fig 1

Vi kan också använda den körbara Putty utan att installera den. Rulla ner på nedladdningssidan för att ladda ner den körbara filen.

Starta nu Putty. Standardalternativen för Putty bör likna fig 2.

Fig 2

Säker anslutning till MySQL med Putty

Det här avsnittet innehåller stegen för att använda Putty för att säkert ansluta till MySQL över SSH-tunneln från ett fjärrsystem. Fyll nu i fjärrvärdens detaljer som visas i Fig. 3.

Fig 3

Klicka också på Anslutning -> SSH -> Tunnlar som markerats i Fig. 3. Fyll nu SSH-portvidarebefordransinformationen som visas i Fig. 4. Källporten ska ställas in på 3306 och Destination bör ställas in på 127.0.0.1:3306 .

Fig 4

Klicka på Lägg till efter att du har fyllt i källporten och destinationen. Det kommer att uppdatera vidarebefordrade portar som visas i Fig. 4. Klicka också på Auth-alternativet och välj SSH-nyckeln som visas i Fig. 5. Se till att du har genererat den privata nyckeln med Puttygen.

Fig. 5

Klicka nu på Öppna för att öppna anslutningen. Den kommer att visa säkerhetsvarningen för första gången som visas i Fig. 6.

Fig 6

Klicka på Ja för att acceptera anslutningen. Den kommer att fråga efter lösenfrasen om du har angett när du genererar den privata nyckeln. Vid en lyckad anslutning kommer den att visa fjärrsystemdetaljerna som visas i Fig. 7.

Fig 7

Förutom att ansluta över SSH, vidarebefordrade den också den lokala porten 3306 till porten 3306 på fjärrservern. Stäng inte Putty eftersom det håller SSH-tunneln öppen till fjärrservern. Starta nu valfri MySQL-klient och försök att ansluta till den fjärranslutna MySQL-servern. Jag har använt MySQL Workbench för demonstrationsändamål. Hemskärmen för Workbench bör likna fig 8. Du kan också följa Använda Workbench för att ansluta till Remote MySQL Server över SSH-tunneln.

Fig 8

Klicka nu på plusikonen för att skapa en ny lokal anslutning som markerats i fig 8. Den visar alternativen för att lägga till anslutning som visas i fig 9.

Fig 9

Ange ett anslutningsnamn och behåll värdnamnet som 127.0.0.1 och porten som 3306 som visas i fig 9. Klicka nu på Testa anslutningen för att testa anslutningen till den fjärranslutna MySQL-servern över SSH-tunneln. Det kommer att fråga efter lösenord som visas i fig 10 om du inte har lagrat det i valvet.

Fig 10

Fyll nu i lösenordet och klicka på OK för att testa anslutningen. Den bör visa ett framgångsmeddelande om anslutningsframgång som visas i Fig. 11.

Fig. 11

Klicka nu på OK för att stänga anslutningsmeddelandet och klicka på OK igen för att stänga anslutningsguiden. Det kommer att lägga till anslutningen till anslutningsbiblioteket som visas i Fig. 12.

Fig 12

Klicka nu på den nyligen tillagda anslutningen. Den ska ansluta till fjärrservern och lista databaserna för den fjärranslutna MySQL-servern som visas i Fig. 13.

Fig 13

Nu kan vi arbeta på fjärrstyrd MySQL-server med Workbench på det lokala systemet. Stäng också Workbench och Putty för att avsluta anslutningen efter att ha slutfört arbetet på den fjärranslutna MySQL-servern.

Säker anslutning till MySQL med SSH

Vi kan ansluta till den fjärranslutna MySQL-servern genom att vidarebefordra den lokala porten 3306 till fjärrporten 3306 med SSH-kommandot som visas nedan. I likhet med föregående avsnitt, se till att den lokala porten 3306 är ledig.

Anteckningar :De nedan nämnda kommandona har testats på Ubuntu Desktop. Stegen och kommandona bör vara liknande på andra Linux-system.

# 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 ovan nämnda kommandona öppnar SSH-tunneln och ansluter den lokala porten 3306 till fjärrporten 3306. Nu kan vi ansluta till den fjärranslutna MySQL-servern med MySQL-klienten. Du kan se föregående avsnitt för att använda MySQL Workbench installerat på det lokala systemet.

Se även Fig. 14 och Fig. 15 för att öppna SSH-tunneln och ansluta till den fjärranslutna MySQL-servern.

Fig 14

Fig 15

Sammanfattning

Den här handledningen gav de steg som krävs för att ansluta till den fjärranslutna MySQL-servern via SSH-tunneln för Windows- och Linux-system.


  1. Varför får jag felmeddelandet Xml-datatypen stöds inte i distribuerade frågor när jag frågar en länkad server för icke-xml-data?

  2. Logga ALLA frågor i en SQL Server 2008 Express-databas?

  3. postgres kolumn X finns inte

  4. Dynamiska tabellnamn i lagrad procedurfunktion