Aplikacija na uredskom serveru spaja se na MySQL na localhost, vi kopirate to ime hosta u desktop klijent, a veza ili ne uspije ili otvori drugu bazu podataka. VPN nije promijenio značenje te riječi: localhost i dalje označava stroj na kojem se izvršava klijent. VPN je premjestio pakete, a ne sučelja. Odlučite do koje krajnje točke prijenosnik treba doći prije nego što dirnete rutu.

Korak 1: odlučite do koje krajnje točke prijenosnik treba doći

Dva su dizajna legitimna i odgovaraju na različita pitanja. Izravan pristup znači da baza sluša na privatnoj adresi do koje tunel može doći, a prijenosnik se spaja na tu adresu. Proslijeđeni pristup znači da baza ostaje na loopbacku i da SSH sesija prenosi port na vaš stroj. Odaberite jedan namjerno, jer njihovo miješanje daje vezu koja radi iz pogrešnog razloga.

Za izravan pristup uzmite vlastito privatno ime ili adresu hosta baze i njegov port od onoga koji ga vodi. Adresa VPN pristupnika nije adresa baze osim ako je to isti stroj. Zatim potvrdite da je slušatelj doista vezan na to sučelje, jer ruta prema sučelju ne stvara slušatelj na njemu.

Korak 2: prosljeđujte port samo ako slušatelj ostaje lokalni

Ako baza treba ostati samo na loopbacku, proslijedite je preko SSH-a i vežite i lokalni kraj na loopback. Adresa vezivanja s lijeve strane pripada vašem prijenosniku; cilj s desne strane tumači se sa strane SSH servera, kako opisuje OpenSSH referenca. Zamjena tih dviju uloga uobičajen je razlog zašto prosljeđivanje izgleda da radi, ali se ne spaja ni na što.

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

Ako SSH sleti na skočni host umjesto na host baze, loopback s desne strane odnosi se na skočni host i cilj se mora promijeniti u adresu do koje taj host može doći. ExitOnForwardFailure hvata neuspjeh uspostavljanja prosljeđivanja, ali ne dokazuje da kasnije veze prema cilju uspijevaju. Držite provjeru ključa hosta uključenom i ne nudite port prosljeđivanja cijeloj svojoj LAN mreži vezivanjem na sva sučelja.

Zaustavite se ako baza mora ostati samo na loopbacku, a ne možete koristiti SSH. Izravan pristup je tada pogrešan dizajn, a ne konfiguracija koju treba forsirati.

Korak 3: prisilite klijenta na TCP

Na Unixu MySQL klijent kojem se zada localhost prema zadanom bira Unix socket, pa promjena samo porta može ostaviti da traži socket koji nema veze s vašim prosljeđivanjem. Koristite izričiti TCP protokol i loopback adresu da klijent otvori vezu prema vašem portu prosljeđivanja.

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

Opcija lozinke bez vrijednosti pita umjesto da tajnu stavi u naredbeni redak, i to je navika koju vrijedi zadržati. Drugi alati imaju vlastitu sklopku za istu razliku, a neki upravljački programi i localhost tretiraju posebno. Provjerite što vaš klijent radi umjesto da pretpostavite da se zastavica prenijela. Račun baze također treba dozvolu koja odgovara izvoru koji server vidi, a to je host prosljeđivanja, ne vaš prijenosnik.

Zaustavite se ako alat ne može biti prisiljen na TCP. Tada upotrijebite drugi klijent ili izravan pristup privatnom slušatelju.

Korak 4: dokažite do koje krajnje točke ste stvarno došli

Pitajte server što misli da je veza. Varijable imena hosta, porta i socketa kažu jeste li došli preko TCP-a i koji je slušatelj odgovorio, a popis veza pokazuje izvornu adresu koju je server zabilježio. Ti su dokazi korisniji od još jedne promjene rute.

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

Zabilježite koju ste krajnju točku pokušali: lokalni Unix socket, svoj port prosljeđivanja ili privatni slušatelj. Ta tri neuspjeha imaju različite popravke, a mijenjanje VPN rute dok klijent još razgovara s pogrešnim localhostom je uzaludan trud. Držite SSH autentifikaciju i autentifikaciju baze odvojeno u bilješkama, jer neuspjeh u jednoj izgleda kao neuspjeh u drugoj iz desktop klijenta. Zatim uklonite prosljeđivanje kad završite.

Popis završava kad možete navesti krajnju točku, protokol klijenta, izvornu adresu koju je server vidio i dozvolu koja ju je omogućila. Četiri činjenice, i sljedeći problem s vezom traje minute umjesto poslijepodneva.

Povezani članci