Kapitola 12 · 12.6
Připojení k databázi zvenčí (SSH tunel)
Za normálních okolností s databází komunikuje jen Váš vlastní web. Ten běží na stejném serveru a připojuje se přes localhost. Chcete se k databázi dostat ze svého počítače, například pomocí HeidiSQL, DBeaver, MySQL Workbench nebo TablePlus? U WebOké to uděláte přes SSH tunel. K tomu potřebujete balíček s SSH: Power Webhost Three, Power Webhost Four, AI Wordpress Three nebo Power Reseller.
Proč ne přímo přes port 3306?
Databázový port 3306 je na našich serverech pro internet zavřený. Děláme to záměrně:
- Otevřený databázový port je neustále napadán. Roboti celý den zkoušejí uživatelská jména a hesla. Na jednom serveru napočítáme tisíce neúspěšných pokusů denně. Jedno slabé nebo uniklé heslo pak stačí k tomu, aby někdo mohl celou Vaši databázi číst nebo smazat.
- Běžné databázové připojení často není šifrované. Hesla a data pak mohou být cestou odposlechnuta, například ve veřejné síti wifi.
- Přístup podle IP adresy je slabý. Doma i v kanceláři se Vaše IP adresa čas od času mění a každý, kdo sdílí stejnou adresu (firemní síť, hotspot), pak projde stejnými dveřmi. V praxi to často skončí u % (kdokoli) a Vaše databáze je pak otevřená celému světu.
- Bezpečnostní chyba v samotném databázovém softwaru postihuje jen servery, jejichž port je dostupný. Při zavřeném portu se k němu nikdo zvenčí nedostane.
SSH tunel tohle všechno řeší. Přihlásíte se svým SSH klíčem (žádné heslo, které by šlo uhodnout), vše probíhá šifrovaně a databáze vidí připojení jako připojení ze samotného serveru. Nemusíte přidávat žádnou IP adresu a funguje to odkudkoli.
Co potřebujete?
- Balíček s SSH (viz SSH klíče a přihlašování přes SSH). Pokud v DirectAdminu nevidíte SSH klíče, Váš balíček SSH neobsahuje. Přejít na jiný balíček můžete v Můj WebOké u svého balíčku, na kartě Změnit hostingový balíček.
- SSH klíč, který je v DirectAdminu uložen v části SSH klíče (krok 1 a 2 v SSH klíče a přihlašování přes SSH).
- Databázového uživatele s heslem. Pokud možno si pro svůj program vytvořte samostatného uživatele, ne uživatele, kterého používá Váš web.
Připojení pomocí databázového programu
Většina programů má tunel zabudovaný. Vyplníte pak dvě sady údajů: údaje pro SSH a údaje pro databázi.
| Nastavení | Co vyplnit? |
|---|---|
| Typ připojení | HeidiSQL: MariaDB or MySQL (SSH tunnel). DBeaver: karta SSH, zaškrtněte Use SSH Tunnel. MySQL Workbench: Standard TCP/IP over SSH. TablePlus a Navicat: Over SSH. |
| SSH host | Název serveru Vašeho balíčku, například linux2023.webawere.nl (viz Jak najít název serveru a uživatelské jméno DA) |
| SSH port | 1967 |
| SSH uživatel | Vaše uživatelské jméno v DA, například wtsilefl |
| SSH klíč | Váš soukromý klíč (soubor id_ed25519, bez .pub). HeidiSQL používá PuTTY a vyžaduje soubor .ppk: převeďte svůj klíč pomocí PuTTYgen. |
| Databázový host | 127.0.0.1 (z pohledu serveru) |
| Databázový port | 3306 |
| Uživatel | Celé jméno databázového uživatele, například wtsilefl_extern |
| Heslo | Heslo tohoto databázového uživatele |
| Databáze | Celý název databáze, například wtsilefl_shop |
Tunel z příkazové řádky
Pokud Váš program neumí SSH tunel vytvořit sám, nebo raději pracujete v příkazové řádce (Mac, Linux nebo Windows Terminal), spusťte tunel sami:
ssh -p 1967 -N -L 3307:127.0.0.1:3306 wtsilefl@linux2023.webawere.nl
Toto okno nechte otevřené, dokud s databází pracujete. Ve svém programu se připojte k hostu 127.0.0.1, portu 3307 se svým databázovým uživatelem a heslem. Tunel ukončíte klávesami Ctrl+C.
Připojení se nedaří
- "Permission denied (publickey)": selhává krok SSH. Zkontrolujte port 1967, zda je Váš veřejný klíč uveden v části Autorizované klíče a zda Váš program používá odpovídající soukromý klíč (viz SSH klíče a přihlašování přes SSH).
- "Access denied": krok SSH proběhl úspěšně, ale uživatelské jméno nebo heslo k databázi nesouhlasí. Použijte celé jméno včetně Vašeho uživatelského jména v DA a podtržítka před ním.
- "Access denied for user ...@127.0.0.1", přestože heslo je správné: v DirectAdminu přidejte v části Access Hosts tohoto databázového uživatele adresu 127.0.0.1. Tato adresa označuje jen samotný server, takže nic neotevírá směrem ven.
- Vypršení časového limitu u SSH: po několika neúspěšných pokusech může být Vaše IP adresa zablokována. Podívejte se v Můj WebOké do části Je moje IP adresa zablokovaná? (viz Problémy s přihlášením a jejich řešení).
Tip: V části Access Hosts databázového uživatele obvykle pro SSH tunel nemusíte nic přidávat: localhost stačí. Pokud jsou tam ještě staré IP adresy nebo %, můžete je odstranit. Žádný přístup už neposkytují, protože port 3306 je zvenčí zavřený.
