O reenvío SSH escoita no porto local 13306, pero mysql segue conectándose á base de datos local—ou informa de que falta o seu socket local. En Unix, un cliente MySQL ao que se lle dá localhost pode escoller un socket Unix en lugar de TCP. Proporcionar un porto non cambia necesariamente esa escolla.

Para un reenvío TCP aprobado xa existente, fai explícito o protocolo:

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

O nome de usuario é ilustrativo; a opción de contrasinal solicita unha entrada interactiva. O comando conéctase ao escoitador TCP local en lugar dun socket Unix.

Mantén separados os dous inicios de sesión

Unha ruta SSH fixa pode ter esta forma:

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

O servidor SSH da pasarela chega a db.internal:3306. Despois MySQL autentica a conta da base de datos a través dese fluxo de bytes. Unha chave SSH aceptada non concede un inicio de sesión na base de datos, e as restricións de orixe da base de datos ven a conexión chegar desde ese lado da ruta.

Isto é un adaptador TCP fixo, non un axuste SOCKS consumido por mysql. A aplicación non necesita negociación SOCKS porque o punto final do reenvío ten un obxectivo predefinido.

Conserva a identidade TLS prevista da base de datos e a política de certificados onde se usen. Conectar o socket a loopback non fai que un certificado de base de datos sexa válido para un nome de servizo distinto. Unha conexión TCP local correcta resolve a escolla de transporte, non a autenticación posterior da base de datos nin as comprobacións TLS.

Artigos relacionados