Глава 12 · 12.6
Връзка с Вашата база данни отвън (SSH тунел)
Обикновено само Вашият уебсайт комуникира с базата данни. Тя се намира на същия сървър и се свързва чрез localhost. Искате ли да достъпите базата данни от собствения си компютър, например с HeidiSQL, DBeaver, MySQL Workbench или TablePlus? При WebOké това става чрез SSH тунел. За целта Ви е необходим пакет със SSH: Power Webhost Three, Power Webhost Four, AI Wordpress Three или Power Reseller.
Защо не директно през порт 3306?
Портът за бази данни 3306 е затворен за интернет на нашите сървъри. Правим това съзнателно:
- Отвореният порт за бази данни е подложен на постоянни атаки. Роботи опитват потребителски имена и пароли по цял ден. На един сървър отчитаме хиляди неуспешни опита на ден. Една слаба или изтекла парола е достатъчна, за да може някой да чете или изтрие цялата Ви база данни.
- Обикновената връзка с база данни често не е криптирана. Тогава паролите и данните могат да бъдат прихванати по пътя, например в обществена Wi-Fi мрежа.
- Достъпът по IP адрес е слаба защита. У дома и в офиса Вашият IP адрес се променя от време на време, а всеки, който споделя същия адрес (фирмена мрежа, hotspot), минава през същата врата. На практика често се стига до % (всички) и тогава базата Ви данни е отворена за целия свят.
- Уязвимост в самия софтуер за бази данни засяга само сървъри, чийто порт е достъпен. При затворен порт никой не може да стигне до нея отвън.
SSH тунелът решава всичко това. Влизате със своя SSH ключ (а не с парола, която може да бъде отгатната), всичко се предава криптирано, а базата данни възприема връзката като връзка от самия сървър. Не е нужно да добавяте IP адрес и това работи от всяко място.
Какво Ви е необходимо?
- Пакет със SSH (вижте SSH Keys и вход чрез SSH). Ако не виждате SSH Keys в DirectAdmin, SSH не е включен във Вашия пакет. Можете да преминете към друг пакет в Моят WebOké при Вашия пакет, в картата Смяна на хостинг пакета.
- SSH ключ, добавен в DirectAdmin в SSH Keys (стъпки 1 и 2 от SSH Keys и вход чрез SSH).
- Потребител на базата данни с парола. За предпочитане създайте отделен потребител за собствената си програма, а не използвайте потребителя на уебсайта си.
Свързване с програма за бази данни
Повечето програми имат вградена поддръжка на тунел. Попълвате два набора данни: за SSH и за базата данни.
| Настройка | Какво да попълните? |
|---|---|
| Тип връзка | HeidiSQL: MariaDB or MySQL (SSH tunnel). DBeaver: раздел SSH, отметнете Use SSH Tunnel. MySQL Workbench: Standard TCP/IP over SSH. TablePlus и Navicat: Over SSH. |
| SSH хост | Името на сървъра на Вашия пакет, например linux2023.webawere.nl (вижте Намиране на името на сървъра и DA потребителското име) |
| SSH порт | 1967 |
| SSH потребител | Вашето потребителско име в DA, например wtsilefl |
| SSH ключ | Вашият частен ключ (файлът id_ed25519, без .pub). HeidiSQL използва PuTTY и изисква файл .ppk: конвертирайте ключа си с PuTTYgen. |
| Хост на базата данни | 127.0.0.1 (погледнато от сървъра) |
| Порт на базата данни | 3306 |
| User | Пълното име на потребителя на базата данни, например wtsilefl_extern |
| Парола | Паролата на този потребител на базата данни |
| Database | Пълното име на базата данни, например wtsilefl_shop |
Тунел от командния ред
Вашата програма не може сама да създаде SSH тунел или предпочитате да работите от командния ред (Mac, Linux или Windows Terminal)? Тогава стартирайте тунела сами:
ssh -p 1967 -N -L 3307:127.0.0.1:3306 wtsilefl@linux2023.webawere.nl
Оставете този прозорец отворен, докато работите с базата данни. В програмата си се свържете с хост 127.0.0.1, порт 3307 и Вашия потребител и парола за базата данни. Спирате с Ctrl+C.
Не успявам да се свържа
- "Permission denied (publickey)": проблемът е в SSH стъпката. Проверете порт 1967, дали публичният Ви ключ е в Authorized Keys и дали програмата Ви използва съответния частен ключ (вижте SSH Keys и вход чрез SSH).
- "Access denied": SSH стъпката е успешна, но потребителското име или паролата на базата данни са грешни. Използвайте пълното име с Вашето потребителско име в DA и долната черта пред него.
- "Access denied for user ...@127.0.0.1", въпреки че паролата е вярна: добавете 127.0.0.1 в DirectAdmin в Access Hosts на този потребител на базата данни. Този адрес е само самият сървър, така че не отваря нищо навън.
- Изтичане на времето (time-out) при SSH: след няколко неуспешни опита Вашият IP адрес може да бъде блокиран. Проверете в Моят WebOké в Блокиран ли съм? (вижте Решаване на проблеми с влизането).
Съвет: За SSH тунел обикновено не е нужно да добавяте нищо в Access Hosts на потребител на базата данни: localhost е достатъчен. Ако там все още има стари IP адреси или %, можете да ги премахнете. Те вече не дават достъп, тъй като порт 3306 е затворен отвън.
