SSH-videresendingen lytter på lokal port 13306, men mysql kobler fortsatt til den lokale databasen—eller rapporterer at dens lokale socket mangler. På Unix kan en MySQL-klient som gis localhost velge en Unix-socket i stedet for TCP. Å oppgi en port endrer ikke nødvendigvis dette valget.

For en eksisterende godkjent TCP-videresending, gjør protokollen eksplisitt:

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

Brukernavnet er illustrativt; passordalternativet ber om interaktiv inntasting. Kommandoen kobler til den lokale TCP-lytteren i stedet for en Unix-socket.

Hold de to påloggingene atskilt

En fast SSH-rute kan ha denne formen:

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

SSH-serveren på gatewayen når db.internal:3306. MySQL autentiserer deretter databasekontoen gjennom den bytestrømmen. En akseptert SSH-nøkkel gir ikke pålogging til databasen, og databasens kildebegrensninger ser tilkoblingen komme fra den siden av ruten.

Dette er en fast TCP-adapter, ikke en SOCKS-innstilling som mysql bruker. Applikasjonen trenger ingen SOCKS-forhandling fordi endepunktet for videresendingen har ett forhåndsdefinert mål.

Behold den tiltenkte TLS-identiteten til databasen og sertifikatpolicyen der de brukes. Å koble socketen til loopback gjør ikke et databasesertifikat gyldig for et annet tjenestenavn. En vellykket lokal TCP-tilkobling avgjør transportvalget, ikke den senere databaseautentiseringen eller TLS-kontrollene.

Relaterte artikler