O encaminhamento SSH escuta na porta local 13306, mas o mysql continua se conectando ao banco de dados local—ou informa que seu socket local está ausente. No Unix, um cliente MySQL ao qual se fornece localhost pode escolher um socket Unix em vez de TCP. Fornecer uma porta não altera necessariamente essa escolha.

Para um encaminhamento TCP aprovado existente, torne o protocolo explícito:

mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
  --user=dbuser --password

O nome de usuário é ilustrativo; a opção de senha solicita entrada interativa. O comando se conecta ao listener TCP local em vez de um socket Unix.

Mantenha os dois logins separados

Uma rota SSH fixa pode ter este formato:

ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]

O servidor SSH do gateway alcança db.internal:3306. O MySQL então autentica a conta do banco de dados por meio desse fluxo de bytes. Uma chave SSH aceita não concede login no banco de dados, e as restrições de origem do banco veem a conexão chegando daquele lado da rota.

Este é um adaptador TCP fixo, não uma configuração SOCKS consumida pelo mysql. A aplicação não precisa de negociação SOCKS porque o endpoint do encaminhamento tem um alvo predefinido.

Mantenha a identidade TLS pretendida do banco de dados e a política de certificados onde forem usadas. Conectar o socket ao loopback não torna um certificado de banco válido para um nome de serviço diferente. Uma conexão TCP local bem-sucedida resolve a escolha de transporte, não a autenticação posterior do banco nem as verificações TLS.

Artigos relacionados