SSH-vidarebefordran lyssnar på den lokala porten 13306, men mysql ansluter fortfarande till den lokala databasen—eller rapporterar att dess lokala socket saknas. På Unix kan en MySQL-klient som ges localhost välja en Unix-socket i stället för TCP. Att ange en port ändrar inte nödvändigtvis detta val.

För en befintlig godkänd TCP-vidarebefordran, gör protokollet explicit:

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

Användarnamnet är illustrativt; lösenordsalternativet begär interaktiv inmatning. Kommandot ansluter till den lokala TCP-lyssnaren i stället för en Unix-socket.

Håll de två inloggningarna åtskilda

En fast SSH-rutt kan ha denna form:

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

Gatewayens SSH-server når db.internal:3306. MySQL autentiserar sedan databaskontot genom den byteströmmen. En accepterad SSH-nyckel ger inte en databasinloggning, och databasens källrestriktioner ser anslutningen komma från den sidan av rutten.

Detta är en fast TCP-adapter, inte en SOCKS-inställning som mysql använder. Programmet behöver ingen SOCKS-förhandling eftersom vidarebefordrans slutpunkt har ett förutbestämt mål.

Behåll databasens avsedda TLS-identitet och certifikatpolicy där de används. Att ansluta socketen till loopback gör inte ett databascertifikat giltigt för ett annat tjänstenamn. En lyckad lokal TCP-anslutning avgör transportvalet, inte den senare databasautentiseringen eller TLS-kontrollerna.

Relaterade artiklar