Skip to content
VDS · Databázy

Vzdialený prístup k databáze: ako ju nevystaviť celému internetu

Dva spôsoby pripojenia k databáze na VDS z pracovného počítača: SSH tunel a otvorený port s obmedzeniami. Čo si vybrať a ako to overiť.

Aktualizované 23. augusta 2026

Databáza, ktorá počúva na 0.0.0.0 s heslom root, prežije len do prvého skenu — a celý rozsah adries je skenovaný nepretržite. Zároveň je pohodlné a často nevyhnutné pripojiť sa k databáze z notebooku s klientom. Existujú dva spôsoby a len jeden z nich nemá žiadne nevýhody.

Spôsob 1: SSH tunel (odporúčaný)

Databáza zostáva naviazaná na 127.0.0.1 a navonok nie je vystavené nič okrem SSH. Na svojom počítači:

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

Teraz sa pripoj na 127.0.0.1:5433 v DBeaver, TablePlus alebo psql. Z pohľadu databázy to vyzerá ako lokálne pripojenie.

Väčšina klientov si tunel nastaví sama: v nastaveniach pripojenia je karta „SSH“. Zadaj adresu stroja z „Prehľadu“ ovládacieho panela /hosting/vds/m/<id> a svoj kľúč.

Výhoda tohto spôsobu: nemusíš meniť nič v konfigurácii databázy ani firewallu.

Spôsob 2: otvorený port s obmedzeniami

Toto je krajné riešenie — pre prípad, keď sa pripája externá služba so známou statickou adresou. Každý krok nižšie je povinný:

ufw allow from 203.0.113.10 to any port 5432 proto tcp

Pre PostgreSQL: listen_addresses = '*' a riadok hostssl all all 203.0.113.10/32 scram-sha-256 v pg_hba.conf. Pre MySQL: bind-address = 0.0.0.0 a používateľ naviazaný na konkrétnu 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 takéto pripojenie posiela dáta v čistom texte. ufw allow 5432 bez uvedenia zdroja je presne to, čo znamená „otvoriť to celému internetu“.

Overenie

Z iného stroja:

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

Očakávaná odpoveď je filtered alebo closed na všetkých portoch. Lokálne skontroluj, čo počúva a kde:

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

Časté chyby

PríznakPríčina
Klient sa nepripojí cez tunelLokálny port je obsadený — vyber iný
Host ... is not allowed to connectPoužívateľ MySQL je naviazaný na localhost
no pg_hba.conf entry for hostNeexistuje pravidlo pre tvoju adresu
Port je otvorený, ale nič neodpovedáDatabáza počúva len na 127.0.0.1
Fungovalo, potom prestaloPoskytovateľ ti dáva dynamickú adresu — ďalší argument pre tunel

Stroje nemajú IPv6 ani druhú adresu. Všetky pravidlá píš pre jedinú verejnú IPv4 adresu z „Prehľadu“ — nebudeš mať zmätok s dvomi stackmi.