Howto

Come connettersi a MySQL attraverso un tunnel SSH

Proteggiamo i nostri dati in transito.

Per impostazione predefinita, il server MySQL ascolta solo su localhost, il che significa che è possibile accedervi solo da applicazioni in esecuzione sullo stesso host.

Il altre situazioni il Database dialoga con gli application in un segmento di rete protetto come una dmz. Tuttavia, in alcune situazioni, si potrebbe desiderare di connettersi al server da postazioni remote. Un’opzione sarebbe quella di configurare il server MySQL per consentire le connessioni remote, ma ciò richiede privilegi amministrativi e può causare rischi per la sicurezza.

Un’alternativa più sicura sarebbe quella di creare un tunnel SSH dal sistema locale al server. Il tunneling SSH è un metodo per creare una connessione SSH crittografata tra un client e una macchina server attraverso la quale le porte dei servizi possono essere trasmesse.

Comunque come prerequisito, sulla macchina dove “gira” MySql deve essere attivo SSH e bisogna avere un client ssh nella macchina da cui vogliamo collegarci.

MySQL
MySQL  attraverso un tunnel SSH

 MySQL attraverso un tunnel SSH.

Se si utilizza Linux o macOS come sistema operativo, è possibile creare un tunnel SSH usando il seguente comando:

ssh -N  -L 9999:127.0.0.0.0.1:3306 [UTENTE]@[IP_SERVER].

 

Le opzioni utilizzate sono le seguenti:

-N – Dice a SSH di non eseguire un comando remoto.
-L 9999:127.0.0.0.0.0.1:3306 – Crea una porta locale di inoltro. IP di destinazione (127.0.0.0.0.1) e la porta remota (3306) sono separati da due punti (:).
UTENTE]@[IP_SERVER] – L’utente SSH remoto e l’indirizzo IP del server.
Per eseguire il comando in background, utilizzare l’opzione -f.
Se il server SSH è in ascolto su una porta diversa da 22 (quella predefinita) specificare la porta con l’opzione -p [PORT_NUMBER].

Una volta eseguito il comando, vi verrà richiesto di inserire la vostra password utente SSH. Dopo averlo inserito, verrete collegati al server, e il tunnel SSH sarà stabilito.

Ora è possibile puntare la macchina locale MySQL client a 127.0.0.1:9999 inserire le credenziali di login al database remoto e accedere al server MySQL.

Ad esempio, per connettersi al server MySQL usando il client mysql a riga di comando che si desidera emettere:

mysql -u MYSQL_USER -p -h 127.0.0.0.0.1:portautilizzata

Dove MYSQL_USER è l’utente remoto di MySQL che ha i privilegi per accedere al database.

Quando richiesto, immettere la password utente MySQL.

Se state utilizzano un client Microsoft puo’ esservi utile questo post.