SSH-videresendelsen lytter på lokal port 13306, men mysql forbinder stadig til den lokale database—eller rapporterer, at dens lokale socket mangler. På Unix kan en MySQL-klient, der får localhost, vælge en Unix-socket i stedet for TCP. At angive en port ændrer ikke nødvendigvis dette valg.

For en eksisterende godkendt TCP-videresendelse, gør protokollen eksplicit:

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

Brugernavnet er illustrativt; adgangskodeindstillingen anmoder om interaktiv indtastning. Kommandoen forbinder til den lokale TCP-lytter i stedet for en Unix-socket.

Hold de to logins adskilt

En fast SSH-rute kan have denne form:

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

Gatewayens SSH-server når db.internal:3306. MySQL godkender derefter databasekontoen gennem den bytestrøm. En accepteret SSH-nøgle giver ikke et databaselogin, og databasens kilderestriktioner ser forbindelsen ankomme fra den side af ruten.

Dette er en fast TCP-adapter, ikke en SOCKS-indstilling, som mysql forbruger. Applikationen har ikke brug for SOCKS-forhandling, fordi videresendelsens endepunkt har ét foruddefineret mål.

Behold den tilsigtede TLS-identitet for databasen og certifikatpolitikken, hvor de bruges. At forbinde socketen til loopback gør ikke et databasecertifikat gyldigt for et andet servicenavn. En vellykket lokal TCP-forbindelse afgør transportvalget, ikke den senere databasegodkendelse eller TLS-kontroller.

Relaterede artikler