Przekierowanie SSH nasłuchuje na lokalnym porcie 13306, ale mysql nadal łączy się z lokalną bazą danych—albo zgłasza, że brakuje jego lokalnego gniazda. W systemie Unix klient MySQL, któremu podano localhost, może wybrać gniazdo Unix zamiast TCP. Podanie portu niekoniecznie zmienia ten wybór.

W przypadku istniejącego zatwierdzonego przekierowania TCP ustaw protokół jawnie:

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

Nazwa użytkownika jest przykładowa; opcja hasła prosi o interaktywne wprowadzenie. Polecenie łączy się z lokalnym odbiornikiem TCP zamiast gniazda Unix.

Trzymaj oba logowania osobno

Stała trasa SSH może mieć taki kształt:

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

Serwer SSH bramy dociera do db.internal:3306. Następnie MySQL uwierzytelnia konto bazy danych przez ten strumień bajtów. Zaakceptowany klucz SSH nie daje logowania do bazy danych, a ograniczenia źródła bazy danych widzą połączenie przychodzące z tej strony trasy.

To stały adapter TCP, a nie ustawienie SOCKS używane przez mysql. Aplikacja nie potrzebuje negocjacji SOCKS, ponieważ punkt końcowy przekierowania ma jeden z góry określony cel.

Zachowaj zamierzoną tożsamość TLS bazy danych i politykę certyfikatów tam, gdzie są używane. Podłączenie gniazda do loopback nie sprawia, że certyfikat bazy danych jest ważny dla innej nazwy usługi. Udane lokalne połączenie TCP rozstrzyga wybór transportu, a nie późniejsze uwierzytelnianie bazy danych ani kontrole TLS.

Powiązane artykuły