Luku 12 · 12.6
Yhdistä tietokantaan ulkopuolelta (SSH-tunneli)
Yleensä vain oma verkkosivustosi on yhteydessä tietokantaan. Se on samalla palvelimella ja yhdistää osoitteen localhost kautta. Haluatko käyttää tietokantaa omalta tietokoneeltasi, esimerkiksi HeidiSQL:llä, DBeaverilla, MySQL Workbenchillä tai TablePlusilla? WebOkéssa se onnistuu SSH-tunnelin kautta. Tarvitset siihen pakettin, jossa on SSH: Power Webhost Three, Power Webhost Four, AI Wordpress Three tai Power Reseller.
Miksi ei suoraan portin 3306 kautta?
Tietokantaportti 3306 on palvelimillamme suljettu internetiltä. Teemme sen tarkoituksella:
- Avointa tietokantaporttia hyökätään jatkuvasti. Robotit kokeilevat käyttäjänimiä ja salasanoja koko päivän. Yhdellä palvelimella laskemme tuhansia epäonnistuneita yrityksiä päivässä. Yksi heikko tai vuotanut salasana riittää silloin koko tietokannan lukemiseen tai tyhjentämiseen.
- Tavallinen tietokantayhteys ei ole usein salattu. Salasanoja ja tietoja voidaan silloin lukea matkalla, esimerkiksi julkisessa wifi-verkossa.
- IP-osoitteeseen perustuva pääsy on heikko. Kotona ja toimistolla IP-osoitteesi vaihtuu silloin tällöin, ja kaikki, jotka jakavat saman osoitteen (yrityksen verkko, hotspot), pääsevät samasta ovesta. Käytännössä päädytään usein merkkiin % (kaikki), jolloin tietokanta on auki koko maailmalle.
- Itse tietokantaohjelmiston haavoittuvuus koskee vain palvelimia, joiden portti on tavoitettavissa. Kun portti on kiinni, kukaan ei pääse siihen ulkopuolelta.
SSH-tunneli ratkaisee kaiken tämän. Kirjaudut SSH-avaimellasi (ei arvattavaa salasanaa), kaikki liikenne on salattua ja tietokanta näkee yhteyden ikään kuin se tulisi palvelimelta itseltään. IP-osoitetta ei tarvitse lisätä, ja yhteys toimii mistä tahansa.
Mitä tarvitset?
- Paketin, jossa on SSH (katso SSH-avaimet ja sisäänkirjautuminen SSH:lla). Jos et näe kohtaa SSH Keys DirectAdminissa, pakettiisi ei kuulu SSH. Voit vaihtaa pakettia Oma WebOkéssa pakettisi kohdalla kortilla Vaihda webhotellipakettia.
- SSH-avaimen, joka on DirectAdminissa kohdassa SSH Keys (artikkelin SSH-avaimet ja sisäänkirjautuminen SSH:lla vaiheet 1 ja 2).
- Tietokantakäyttäjän salasanoineen. Luo mieluiten erillinen käyttäjä omaa ohjelmaasi varten, älä käytä verkkosivustosi käyttäjää.
Yhdistäminen tietokantaohjelmalla
Useimmissa ohjelmissa tunneli on sisäänrakennettuna. Täytät silloin kaksi tietojoukkoa: SSH:n tiedot ja tietokannan tiedot.
| Asetus | Mitä täytät? |
|---|---|
| Yhteystyyppi | HeidiSQL: MariaDB or MySQL (SSH tunnel). DBeaver: välilehti SSH, valitse Use SSH Tunnel. MySQL Workbench: Standard TCP/IP over SSH. TablePlus ja Navicat: Over SSH. |
| SSH-isäntä | Pakettisi palvelimen nimi, esimerkiksi linux2023.webawere.nl (katso Palvelimen nimen ja DA-käyttäjätunnuksen löytäminen) |
| SSH-portti | 1967 |
| SSH-käyttäjä | DA-käyttäjänimesi, esimerkiksi wtsilefl |
| SSH-avain | Yksityinen avaimesi (tiedosto id_ed25519, ilman .pub-päätettä). HeidiSQL käyttää PuTTYa ja haluaa .ppk-tiedoston: muunna avaimesi PuTTYgenillä. |
| Tietokantaisäntä | 127.0.0.1 (palvelimelta katsottuna) |
| Tietokantaportti | 3306 |
| User | Tietokantakäyttäjän koko nimi, kuten wtsilefl_extern |
| Salasana | Kyseisen tietokantakäyttäjän salasana |
| Database | Tietokannan koko nimi, kuten wtsilefl_shop |
Tunneli komentoriviltä
Eikö ohjelmasi osaa itse luoda SSH-tunnelia, tai työskenteletkö mieluummin komentorivillä (Mac, Linux tai Windows Terminal)? Käynnistä tunneli silloin itse:
ssh -p 1967 -N -L 3307:127.0.0.1:3306 wtsilefl@linux2023.webawere.nl
Pidä tämä ikkuna auki niin kauan kuin työskentelet tietokannan kanssa. Yhdistä ohjelmassasi isäntään 127.0.0.1, porttiin 3307 tietokantakäyttäjälläsi ja salasanallasi. Lopetat painamalla Ctrl+C.
Yhdistäminen ei onnistu
- "Permission denied (publickey)": SSH-vaihe epäonnistuu. Tarkista portti 1967, onko julkinen avaimesi kohdassa Authorized Keys ja käyttääkö ohjelmasi siihen kuuluvaa yksityistä avainta (katso SSH-avaimet ja sisäänkirjautuminen SSH:lla).
- "Access denied": SSH-vaihe onnistui, mutta tietokannan käyttäjänimi tai salasana on väärä. Käytä koko nimeä, jonka alussa on DA-käyttäjänimesi ja alaviiva.
- "Access denied for user ...@127.0.0.1", vaikka salasana on oikein: lisää DirectAdminissa kyseisen tietokantakäyttäjän kohtaan Access Hosts osoite 127.0.0.1. Tämä osoite tarkoittaa vain palvelinta itseään, joten se ei avaa mitään ulospäin.
- SSH:n aikakatkaisu: muutaman epäonnistuneen yrityksen jälkeen IP-osoitteesi voi olla estetty. Katso Oma WebOkéssa kohta Olenko estetty? (katso Kirjautumisongelmien ratkaiseminen).
Vinkki: SSH-tunnelia varten tietokantakäyttäjän kohtaan Access Hosts ei yleensä tarvitse lisätä mitään: localhost riittää. Jos siellä on vielä vanhoja IP-osoitteita tai %, voit poistaa ne. Ne eivät enää anna pääsyä, koska portti 3306 on ulkopuolelta kiinni.
