Skip to content
VDS · Baze podataka

Udaljeni pristup bazi: kako da je ne izložiš celom internetu

Dva načina da se povežeš na bazu na VDS-u sa svog radnog računara: SSH tunel i otvoren port sa ograničenjima. Šta izabrati i kako proveriti.

Ažurirano 23. avgust 2026.

Baza podataka koja osluškuje na 0.0.0.0 sa lozinkom root preživi samo do prvog skeniranja — a ceo opseg adresa se skenira neprekidno. U isto vreme, povezivanje na bazu sa laptopa preko klijenta je praktično i često neophodno. Postoje dva načina, a samo jedan od njih nema mane.

Način 1: SSH tunel (preporučeno)

Baza ostaje vezana na 127.0.0.1, a spolja je izložen samo SSH. Na svom računaru:

ssh -L 5433:127.0.0.1:5432 root@YOUR_ADDRESS -N
ssh -L 3307:127.0.0.1:3306 root@YOUR_ADDRESS -N

Sada se poveži na 127.0.0.1:5433 u DBeaver-u, TablePlus-u ili psql-u. Sa stanovišta baze, to izgleda kao lokalna konekcija.

Većina klijenata može sama da podesi tunel: u podešavanjima konekcije postoji kartica „SSH”. Navedi adresu mašine iz „Overview” u panelu /hosting/vds/m/<id> i svoj ključ.

Prednost ovog načina: ne moraš ništa da menjaš u konfiguraciji baze ni firewall-a.

Način 2: otvoren port sa ograničenjima

Ovo je poslednje sredstvo — za slučaj kada se povezuje spoljni servis sa poznatom statičkom adresom. Svaki korak ispod je obavezan:

ufw allow from 203.0.113.10 to any port 5432 proto tcp

Za PostgreSQL: listen_addresses = '*' i linija hostssl all all 203.0.113.10/32 scram-sha-256 u pg_hba.conf. Za MySQL: bind-address = 0.0.0.0 i korisnik vezan za konkretnu adresu:

CREATE USER 'app'@'203.0.113.10' IDENTIFIED BY 'long-password';
GRANT SELECT, INSERT, UPDATE, DELETE ON shop.* TO 'app'@'203.0.113.10';

Bez TLS-a, takva konekcija šalje podatke u čistom tekstu. ufw allow 5432 bez navođenja izvora je upravo ono što znači „otvoriti ga celom internetu”.

Provera

Sa druge mašine:

nmap -Pn -p 3306,5432,6379,27017 YOUR_ADDRESS

Očekivani odgovor je filtered ili closed na svim portovima. Lokalno proveri šta osluškuje i gde:

ss -tulpn | grep -E '3306|5432|6379'

Česte greške

SimptomUzrok
Klijent ne može da se poveže kroz tunelLokalni port je zauzet — izaberi drugi
Host ... is not allowed to connectMySQL korisnik je vezan za localhost
no pg_hba.conf entry for hostNe postoji pravilo za tvoju adresu
Port je otvoren ali ništa ne odgovaraBaza osluškuje samo na 127.0.0.1
Radilo je, pa prestaloProvajder ti daje dinamičku adresu — još jedan argument za tunel

Mašine nemaju IPv6, a ni drugu adresu. Piši sva pravila za jedinu javnu IPv4 adresu iz „Overview” — neće biti zabune sa dva steka.