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
| Simptom | Uzrok |
|---|---|
| Klijent ne može da se poveže kroz tunel | Lokalni port je zauzet — izaberi drugi |
Host ... is not allowed to connect | MySQL korisnik je vezan za localhost |
no pg_hba.conf entry for host | Ne postoji pravilo za tvoju adresu |
| Port je otvoren ali ništa ne odgovara | Baza osluškuje samo na 127.0.0.1 |
| Radilo je, pa prestalo | Provajder 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.