SSH-edelleenohjaus kuuntelee paikallisella portilla 13306, mutta mysql yhdistää edelleen paikalliseen tietokantaan—tai ilmoittaa, että sen paikallinen socket puuttuu. Unixissa MySQL-asiakasohjelma, jolle annetaan localhost, voi valita Unix-socketin TCP:n sijaan. Portin antaminen ei välttämättä muuta tätä valintaa.

Tee protokolla selväksi olemassa olevalle hyväksytylle TCP-edelleenohjaukselle:

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

Käyttäjänimi on havainnollistava; salasana-asetus pyytää vuorovaikutteista syötettä. Komento yhdistää paikalliseen TCP-kuuntelijaan Unix-socketin sijaan.

Pidä kaksi kirjautumista erillään

Kiinteä SSH-reitti voi olla tällainen:

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

Yhdyskäytävän SSH-palvelin saavuttaa osoitteen db.internal:3306. Sen jälkeen MySQL todentaa tietokantatilin kyseisen tavuvirran kautta. Hyväksytty SSH-avain ei anna tietokantakirjautumista, ja tietokannan lähderajoitukset näkevät yhteyden saapuvan reitin siltä puolelta.

Tämä on kiinteä TCP-sovitin, ei mysql:n käyttämä SOCKS-asetus. Sovellus ei tarvitse SOCKS-neuvottelua, koska edelleenohjauksen päätepisteellä on yksi ennalta määritetty kohde.

Säilytä tietokannan aiottu TLS-identiteetti ja varmennepolitiikka siellä, missä niitä käytetään. Socketin yhdistäminen loopbackiin ei tee tietokantavarmennetta kelvolliseksi toiselle palvelunimelle. Onnistunut paikallinen TCP-yhteys ratkaisee siirtotavan valinnan, ei myöhempää tietokannan todentamista tai TLS-tarkistuksia.

Aiheeseen liittyvät artikkelit