Fai usare a MySQL la porta TCP inoltrata
Evita di selezionare un socket Unix locale quando un client MySQL deve connettersi tramite un inoltro SSH TCP.
L'inoltro SSH ascolta sulla porta locale 13306, ma mysql continua a connettersi al database locale—oppure segnala che il suo socket locale manca. Su Unix, un client MySQL a cui viene dato localhost può scegliere un socket Unix anziché TCP. Fornire una porta non cambia necessariamente questa scelta.
Per un inoltro TCP approvato esistente, rendi esplicito il protocollo:
mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
--user=dbuser --password
Il nome utente è illustrativo; l'opzione password richiede un input interattivo. Il comando si connette al listener TCP locale anziché a un socket Unix.
Tieni separati i due accessi
Una rotta SSH fissa può avere questa forma:
ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]
Il server SSH del gateway raggiunge db.internal:3306. MySQL autentica quindi l'account del database attraverso quel flusso di byte. Una chiave SSH accettata non concede un accesso al database, e le restrizioni di origine del database vedono la connessione arrivare da quel lato della rotta.
Questo è un adattatore TCP fisso, non un'impostazione SOCKS consumata da mysql. L'applicazione non necessita di negoziazione SOCKS perché l'endpoint dell'inoltro ha un solo target predefinito.
Conserva l'identità TLS prevista per il database e la politica dei certificati dove vengono usate. Connettere il socket al loopback non rende un certificato del database valido per un nome di servizio diverso. Una connessione TCP locale riuscita decide la scelta del trasporto, non l'autenticazione successiva del database né i controlli TLS.