SSH persiuntimas klausosi vietinio 13306 porto, bet mysql vis tiek jungiasi prie vietinės duomenų bazės—arba praneša, kad trūksta jo vietinio socket. Unix sistemoje MySQL klientas, kuriam duotas localhost, gali pasirinkti Unix socket, o ne TCP. Portas nebūtinai pakeičia šį pasirinkimą.

Esamam patvirtintam TCP persiuntimui padarykite protokolą aiškų:

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

Vartotojo vardas yra iliustratyvus; slaptažodžio parinktis prašo interaktyvaus įvedimo. Komanda jungiasi prie vietinio TCP klausytojo, o ne prie Unix socket.

Laikykite abu prisijungimus atskirai

Fiksuotas SSH maršrutas gali turėti tokią formą:

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

Tarpinės SSH serveris pasiekia db.internal:3306. Tada MySQL autentifikuoja duomenų bazės paskyrą per tą baitų srautą. Priimtas SSH raktas nesuteikia prisijungimo prie duomenų bazės, o duomenų bazės šaltinio apribojimai mato ryšį ateinant iš tos maršruto pusės.

Tai fiksuotas TCP adapteris, o ne mysql naudojamas SOCKS nustatymas. Programai nereikia SOCKS derybų, nes persiuntimo galinis taškas turi vieną iš anksto nustatytą tikslą.

Išsaugokite numatytą duomenų bazės TLS tapatybę ir sertifikatų politiką ten, kur jie naudojami. Socket prijungimas prie loopback nepadaro duomenų bazės sertifikato galiojančio kitam paslaugos pavadinimui. Sėkmingas vietinis TCP ryšys nulemia transporto pasirinkimą, o ne vėlesnį duomenų bazės autentifikavimą ar TLS patikras.

Susiję straipsniai