Applikasjonen på kontorserveren kobler til MySQL på localhost, du kopierer vertsnavnet inn i en skrivebordsklient, og tilkoblingen feiler enten eller åpner en annen database. VPN endret ikke ordets betydning: localhost viser fortsatt til maskinen som kjører klienten. VPN flyttet pakker, ikke grensesnitt. Bestem hvilket endepunkt laptopen skal nå, før du rører en rute.

Trinn 1: bestem hvilket endepunkt laptopen skal nå

Begge designene er legitime og svarer på forskjellige spørsmål. Direkte tilgang betyr at databasen lytter på en privat adresse som tunnelen når, og laptopen kobler til den adressen. Videresendt tilgang betyr at databasen blir på loopback og en SSH-økt bærer porten til maskinen din. Velg ett bevisst, fordi å blande dem gir en tilkobling som virker av feil grunn.

For direkte tilgang, skaff vertsmaskinens eget private navn eller adresse og porten fra den som drifter den. VPN-gatewayens adresse er ikke databaseadressen med mindre det er samme maskin. Bekreft deretter at lytteren faktisk er bundet til grensesnittet, fordi en rute til et grensesnitt ikke oppretter en lytter der.

Trinn 2: videresend porten bare hvis lytteren blir lokal

Hvis databasen skal forbli bare på loopback, videresend den over SSH og bind den lokale enden til loopback også. Bindeadressen til venstre tilhører laptopen din; målet til høyre tolkes fra SSH-serverens side, slik OpenSSH-referansen beskriver. Å bytte om de to rollene er den vanlige grunnen til at en videresending ser ut til å virke, men ikke kobler til noe.

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:13306:127.0.0.1:3306 [email protected]
ss -ltn 'sport = :13306'

Hvis SSH lander på en hoppvert i stedet for databaseverten, viser loopbacken til høyre til hoppverten, og målet må endres til en adresse den verten når. ExitOnForwardFailure fanger en feil ved å opprette videresendingen, men beviser ikke at senere tilkoblinger til målet lykkes. Hold vertsnøkkelkontrollen på, og ikke tilby videresendingsporten til hele LAN-et ditt ved å binde den til alle grensesnitt.

Stopp hvis databasen må forbli bare på loopback og du ikke kan bruke SSH. Da er direkte tilgang feil design, ikke en konfigurasjon som skal tvinges gjennom.

Trinn 3: tving klienten over på TCP

På Unix velger en MySQL-klient som får localhost en Unix-socket som standard, så hvis du bare endrer porten, kan den bli stående og lete etter en socket som ikke har noe med videresendingen din å gjøre. Bruk den eksplisitte TCP-protokollen og loopback-adressen for å få klienten til å åpne en tilkobling til videresendingsporten din.

mysql --protocol=TCP --host=127.0.0.1 --port=13306 --user=DB_USER --password

Passordvalget uten verdi spør i stedet for å sette hemmeligheten på kommandolinjen, og det er vanen som er verdt å beholde. Andre verktøy har sin egen bryter for samme skille, og noen drivere behandler localhost spesielt også. Sjekk hva klienten din gjør i stedet for å anta at flagget ble med. Databasekontoen trenger også en tillatelse som samsvarer med kilden serveren ser, og det er videresendingsverten, ikke laptopen din.

Stopp hvis verktøyet ikke kan tvinges over på TCP. Bruk da en annen klient, eller bruk direkte tilgang til den private lytteren.

Trinn 4: bevis hvilket endepunkt du faktisk nådde

Spør serveren hva den mener tilkoblingen er. Variablene for vertsnavn, port og socket forteller om du kom over TCP og hvilken lytter som svarte, og tilkoblingslisten viser kildeadressen serveren registrerte. Det beviset er nyttigere enn en ny ruteendring.

mysql --protocol=TCP -h 127.0.0.1 -P 13306 -u DB_USER -p -e "SELECT @@hostname, @@port, @@socket"

Noter hvilket endepunkt du forsøkte: en lokal Unix-socket, videresendingsporten din eller den private lytteren. De tre feilene har forskjellige løsninger, og å endre VPN-ruten mens klienten fortsatt snakker med feil localhost er bortkastet arbeid. Hold også SSH-autentisering og databaseautentisering adskilt i notatene, fordi en feil i den ene ser ut som en feil i den andre fra en skrivebordsklient. Fjern deretter videresendingen når du er ferdig.

Sjekklisten slutter når du kan navngi endepunktet, klientprotokollen, kildeadressen serveren så og tillatelsen som gjorde det mulig. Fire fakta, og det neste tilkoblingsproblemet tar minutter i stedet for en ettermiddag.

Relaterte artikler