Vai al contenuto
Indice
Siti web

Connettersi al Database Tramite un Tunnel SSH

Traduzione automatica. L'originale in inglese è disponibile.

Il database del tuo sito è in ascolto solo sull'indirizzo di loopback del server, quindi uno strumento desktop come TablePlus, Sequel Ace, DBeaver o MySQL Workbench non può contattarlo direttamente. Un tunnel SSH offre a questi strumenti una porta locale inoltrata al database, ed è così che ottieni una GUI corretta sui tuoi dati senza esporre MySQL a internet.

Perché serve un tunnel

Apri Siti web, clicca sul sito, poi Database. La scheda Dettagli di connessione mostra l'host come 127.0.0.1 e la porta come 3306. Non è un segnaposto: il database accetta davvero connessioni solo dalla macchina su cui gira. Nulla sulla rete pubblica può raggiungere la porta 3306, il che elimina un'intera categoria di attacchi.

Un tunnel SSH colma questa lacuna in modo sicuro. Il tuo client SSH apre una porta sul tuo portatile, cripta tutto ciò che vi invii e lo consegna al database dall'interno del server, esattamente come se un processo locale si fosse connesso.

Scheda Database che mostra i dettagli di connessione in KPanel

Cosa ti serve prima

Un tunnel è una connessione SSH, quindi ti serve una chiave SSH registrata sul sito prima che tutto questo funzioni. Segui prima Aggiungere chiavi SSH a un sito, poi torna qui.

Raccogli quattro elementi:

  • Host, porta e username SSH, da Impostazioni, poi Chiavi SSH, nella scheda Dettagli di connessione.
  • Nome del database, username e password, da Database. Clicca sull'icona a forma di occhio per rivelare la password e sull'icona di copia per metterla negli appunti.

Se la scheda Database indica No database provisioned for this site type, questo sito non ne ha uno. I siti statici e alcuni siti Node.js vengono creati senza database.

Aprire il tunnel da un terminale

Lo schema generale è: inoltra una porta locale a 127.0.0.1:3306 dall'altro lato della connessione SSH.

ssh -N -L 3307:127.0.0.1:3306 <ssh-username>@<ssh-host> -p <ssh-port>
  • -L 3307:127.0.0.1:3306 apre la porta 3307 sulla tua macchina e la inoltra alla porta 3306 sull'interfaccia di loopback del server.
  • -N indica di non avviare una shell, solo di mantenere aperto il tunnel.
  • Aggiungi -i /path/to/key se la chiave per questo sito non è quella predefinita.

Lascia quella finestra del terminale in esecuzione. Finché è aperta, 127.0.0.1:3307 sul tuo portatile è il database del sito.

Usa 3307 in locale anziché 3306. Se hai MySQL o MariaDB installati sulla tua macchina, questi stanno già usando la 3306, e il tunnel non riuscirà ad associarsi con un errore "address already in use". Qualsiasi porta locale libera va bene.

Puntare il tuo client database al tunnel

Nel tuo client GUI, crea una connessione MySQL semplice con questi valori:

CampoValore
Host127.0.0.1
Porta3307 (qualunque porta locale tu abbia inoltrato)
UtenteLo Username dalla scheda Database
PasswordLa Password dalla scheda Database
DatabaseIl nome del Database dalla scheda Database

Non inserire l'host SSH nel campo Host. Per quanto riguarda il client, sta parlando con un database sulla tua stessa macchina.

Client con una scheda SSH integrata

TablePlus, Sequel Ace, DBeaver e MySQL Workbench possono gestire il tunnel autonomamente, il che evita di dover tenere aperto un terminale. Compila due gruppi di campi:

  • Sezione SSH: host, porta, username e file della chiave privata dalla pagina Chiavi SSH.
  • Sezione Database: host 127.0.0.1, porta 3306, oltre al nome del database, utente e password dalla scheda Database.

Quando il client crea il tunnel, usa 3306 nella sezione database anziché la tua porta locale inoltrata. Il client si connette dal punto di vista del server, quindi vede la porta reale.

Usare phpMyAdmin come alternativa

Se ti serve solo dare un'occhiata rapida a una tabella, non hai affatto bisogno di un tunnel. La scheda Database ha una scheda phpMyAdmin con un pulsante Apri phpMyAdmin. Ti autentica tramite KPanel, quindi non c'è una password separata da ricordare, e si apre in una nuova scheda già puntata al database di questo sito.

phpMyAdmin è l'opzione più rapida per sfogliare, eseguire una query occasionale o controllare un valore. Un client desktop tramite tunnel è migliore per export di grandi dimensioni, lavoro sullo schema e qualsiasi cosa tu voglia scriptare. Vedi Usare phpMyAdmin per il percorso via browser.

Eseguire query e dump tramite il tunnel

Con il tunnel aperto, gli strumenti standard da riga di comando funzionano normalmente, puntati sulla tua porta locale inoltrata:

mysql -h 127.0.0.1 -P 3307 -u <db-user> -p <db-name>

mysqldump -h 127.0.0.1 -P 3307 -u <db-user> -p <db-name> > backup.sql

Un dump manuale è una copia di comodo, non una strategia di backup. È aggiornato solo al momento in cui lo hai eseguito, e risiede su qualunque portatile tu abbia usato. KapsuleHost esegue già backup automatici giornalieri del sito, conservati per 30 giorni. Vedi Eseguire un backup prima di affidarti a un file .sql locale.

Risoluzione dei problemi

"Address already in use" durante l'apertura del tunnel. Qualcosa sulla tua macchina sta già usando quella porta locale. Scegline un'altra, ad esempio -L 3399:127.0.0.1:3306, e modifica la porta nel tuo client di conseguenza.

"Connection refused" dal client database. Il tunnel non è attivo. Controlla che il terminale SSH sia ancora in esecuzione e non abbia stampato un errore, e che la porta nel tuo client corrisponda alla porta locale nell'argomento -L.

SSH si connette ma il client va comunque in timeout. Conferma di aver inoltrato verso 127.0.0.1:3306 e non verso l'hostname pubblico. Inoltrare verso il nome pubblico chiede al server di raggiungere il database tramite internet, cosa che è esattamente ciò che è bloccato.

"Access denied for user". Il login SSH è riuscito ma le credenziali MySQL sono sbagliate. Copia di nuovo username e password dalla scheda Database usando le icone di copia anziché digitarle di nuovo, e controlla di esserti connesso al nome di database corretto.

Permission denied (publickey) prima ancora di raggiungere MySQL. Questo riguarda il livello SSH, non il database. Consulta la sezione di risoluzione dei problemi in Aggiungere chiavi SSH a un sito.

Dove andare dopo

Ti è stato utile?

È un'IA? Legga questa pagina in Markdown

Articoli correlati

Connessione tramite SFTP: FileZilla, Cyberduck e riga di comandoSFTP (Secure File Transfer Protocol) ti offre accesso diretto ai file del tuo sito sul server. Questa guida copre tutto ciò che ti serve per collegarti con…Certificati SSL e HTTPSQuesto articolo spiega cosa sia SSL in parole semplici, come KapsuleHost gestisca automaticamente SSL per i tuoi siti e cosa fare se qualcosa va storto con il…Siti web: da dove iniziareCome funziona l'hosting di siti web presso KapsuleHost, cosa si trova in ciascuna scheda di un sito e quale guida leggere per il compito che hai davanti.…Monitoraggio del Tempo di Attività del SitoOgni sito su KapsuleHost viene controllato automaticamente ogni 60 secondi, e la scheda Uptime mostra il risultato: stato attuale, percentuale di uptime, tempi…

Hai ancora bisogno di aiuto?

Chiedi a Kora, che conosce il tuo account, o contatta il nostro team.

ContattaciContatta il supporto