Prejsť na obsah

Nastavenia súborov cookie

Vyberte, aké druhy súborov cookie povolíte. Svoj výber môžete kedykoľvek zmeniť cez Nastavenia súborov cookie v dolnej časti každej stránky. Vyhlásenie o ochrane osobných údajov

Nevyhnutné

Vždy zapnuté

Potrebné na prihlásenie, uchovanie košíka a zapamätanie vašich volieb. Sú vždy zapnuté.

Ktoré súbory cookie?
  • weboke_sessie, weboke_klant, weboke_remember: vaša relácia a trvalé prihlásenie
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazovanie cien s DPH alebo bez DPH
  • wok_cookies: váš výber súborov cookie, 12 mesiacov

Merajú, ktorá reklama vedie k návšteve alebo objednávke, aby sme neplatili za reklamy, ktoré nič neprinášajú.

Ktoré súbory cookie?
  • Google Ads cez Google Tag Manager (_gcl_au, _gcl_aw), najviac 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: ktorý partner vás k nám odporučil (partnerský program), 60 dní

4,6

Krajina a jazyk

Každá krajina má vlastný web s cenami a DPH danej krajiny.

Zobraziť

Šikovné používanie SSH

Modul 2: SSH a kľúče · Čas čítania: 10 minút

Cieľ lekcie: Po tejto lekcii budete vedieť pohodlne používať SSH každý deň s vlastným konfiguračným súborom, kopírovať súbory pomocou scp a rsync a cez tunel sa dostať k databáze bez toho, aby databázový port musel byť otvorený do internetu.

Kľúčové pojmy: ~/.ssh/config, Host, HostName, User, IdentityFile, scp, rsync, sftp, port forwarding, -L, tunel, ProxyJump, ServerAliveInterval, iné číslo portu, odvolanie kľúča

Menej písania vďaka ~/.ssh/config

Po niekoľkých týždňoch toto napíšete desiatky ráz denne:

anna@laptop:~$ ssh -i ~/.ssh/id_ed25519 anna@192.0.2.10

S konfiguračným súborom pre klienta to bude kratšie a urobíte menej chýb. Súbor sa nachádza na vašom vlastnom počítači: ~/.ssh/config (Windows: C:\Users\anna\.ssh\config, bez prípony).

Host web1
    HostName 192.0.2.10
    User anna
    IdentityFile ~/.ssh/id_ed25519
    ServerAliveInterval 60

Host test
    HostName test.example.com
    User anna
    Port 2222

Teraz stačí jednoducho:

anna@laptop:~$ ssh web1
anna@web1:~$

Čo robia jednotlivé riadky?

  • Host je prezývka, ktorú si zvolíte sami. Píšete ju za ssh, scp a rsync.
  • HostName je skutočná adresa: IP adresa alebo názov, ktorý je v DNS.
  • User a Port sú používateľské meno a port, takže si ich už nemusíte pamätať.
  • IdentityFile určuje kľúč. Hodí sa, ak máte viac kľúčov; bez tohto riadku skúša ssh vaše predvolené kľúče.
  • ServerAliveInterval 60 posiela každých 60 sekúnd malý signál, že spojenie žije. Mnohé domáce routery a siete wifi po niekoľkých minútach prerušia tiché spojenie; vďaka tomu zostane vaša relácia otvorená.

Aj tu platí, rovnako ako na serveri, že rozhoduje prvá hodnota. Všeobecné pravidlá ako Host * preto dajte na koniec súboru.

Kopírovanie súborov: scp, rsync a sftp

scp kopíruje súbor v rovnakom tvare ako cp, ale s host: pred ním:

anna@laptop:~$ scp backup.sql web1:/home/anna/
anna@laptop:~$ scp web1:/var/log/nginx/error.log .

rsync je šikovnejší pri priečinkoch a veľkých objemoch: posiela len to, čo sa zmenilo, a dokáže pokračovať v prerušenom kopírovaní. Musí byť nainštalovaný na oboch stranách (apt install rsync).

anna@laptop:~$ rsync -avz --progress ./site/ web1:/var/www/example.com/

Dávajte pozor na lomku za ./site/: s lomkou rsync kopíruje obsah priečinka, bez lomky samotný priečinok (dostanete potom /var/www/example.com/site/). Ak si nie ste istí, vyskúšajte to najprv s --dry-run a buďte veľmi opatrní s --delete, ktorý na prijímajúcej strane odstráni všetko, čo u vás neexistuje.

sftp a grafické programy ako FileZilla alebo WinSCP používajú rovnaké spojenie SSH a rovnaký kľúč. Nie je teda potrebný samostatný FTP server. Staromódny FTP server na VPS neodporúčame: obyčajné FTP posiela vaše heslo cez sieť nezašifrované.

Tunel namiesto otvoreného portu

Toto je možno to najužitočnejšie, čo SSH dokáže. Predstavte si, že na vašom serveri beží databáza PostgreSQL. Chcete sa k nej dostať z notebooku pomocou grafického programu. Pokušenie otvoriť port 5432 do internetu je veľké. Nerobte to: otvorené databázové porty patria medzi najčastejšie príčiny únikov dát (lekcia 10.2) a kurz neskôr zvonku overí, že sú zatvorené (úloha Z5.1).

Pomocou lokálneho presmerovania portu (local port forwarding) necháte SSH vytvoriť tunel:

anna@laptop:~$ ssh -L 5432:127.0.0.1:5432 web1

Čítajte to takto: "počúvaj na mojom notebooku na porte 5432 a všetko, čo tam príde, pošli cez spojenie SSH na 127.0.0.1:5432, z pohľadu servera". Kým je táto relácia otvorená, pripájate svoj databázový program na localhost port 5432 na vlastnom notebooku a dostanete sa k databáze na serveri.

Prečo je to také dobré?

  • Databáza počúva na serveri len na 127.0.0.1 a zvonku je nedostupná.
  • Spojenie šifruje SSH, aj keď samotná databáza šifrovanie nemá.
  • Dostane sa k nej len ten, kto sa vie prihlásiť cez SSH. Využívate teda silné zabezpečenie, ktoré už máte.

Ak na vašom notebooku už niečo beží na porte 5432, zvoľte vľavo iné číslo: -L 15432:127.0.0.1:5432 a pripojte sa na port 15432. Ak tunel zapíšete do ~/.ssh/config, budete ho mať vždy po ruke:

Host web1-db
    HostName 192.0.2.10
    User anna
    LocalForward 15432 127.0.0.1:5432

S ssh -N web1-db dostanete len tunel, bez príkazového riadku.

Cez prechodný server: ProxyJump

Niekedy sa k serveru dostanete len cez iný server, napríklad k databázovému serveru bez verejnej IP adresy za vaším webovým serverom. ProxyJump preskočí cez prvý server na druhý:

Host db1
    HostName 10.0.0.5
    User anna
    ProxyJump web1

Rozdiel oproti agent forwarding (lekcia 2.1): pri ProxyJump prebieha šifrovanie od začiatku do konca medzi vaším notebookom a db1. Prechodný server len odovzdáva pakety ďalej a váš kľúč použiť nemôže.

Iné číslo portu: áno, alebo nie?

Mnohé návody odporúčajú presunúť SSH na iný port, napríklad 2222. Čo to v skutočnosti robí?

  • Znižuje šum: väčšina automatizovaných pokusov o uhádnutie hesla skúša len port 22. Váš log bude pokojnejší.
  • Nie je to zabezpečenie. Skener, ktorý prejde všetky porty, nájde SSH za pár sekúnd podľa jeho bannera s verziou.

S kľúčmi a vypnutým prihlasovaním heslom (lekcia 2.2) port pre bezpečnosť veľa neznamená. Ak ho predsa chcete zmeniť, urobte to v správnom poradí: otvorte nový port vo firewalle, nechajte SSH počúvať na oboch portoch, otestujte to v druhom okne a až potom zatvorte starý port. Na Ubuntu 24.04 a novšom k tomu patria systemctl daemon-reload a systemctl restart ssh.socket (lekcia 2.2). Nezabudnite, že aj váš poskytovateľ môže mať firewall.

Odvolanie prístupu

Bývalý kolega alebo tvorca webu mal kľúč na vašom serveri a už pre vás nepracuje? Odvolať prístup je jednoduché, ak si to evidujete:

  1. Pozrite si všetky kľúče: ssh-keygen -lf ~/.ssh/authorized_keys, a urobte to pre každého používateľa (aj /root/.ssh/authorized_keys).
  2. Odstráňte riadok tejto osoby.
  3. Ak používala vlastný používateľský účet, uzamknite ho (lekcia 3.1) a skontrolujte, či bola v skupine sudo (lekcia 3.2).
  4. Ak videla heslá, napríklad heslo k databáze v konfiguračnom súbore, zmeňte aj tie.

Obyčajný kľúč nemá dátum platnosti. Čo neodstránite, funguje ďalej, aj po rokoch. Ak niekomu dávate dočasný prístup, môžete pred jeho riadok v authorized_keys pridať voľbu expiry-time="20261231"; po tomto dátume server kľúč odmietne.

Zhrnutie

  • ~/.ssh/config na vašom vlastnom počítači uchováva pre každý server názov, používateľa, port a kľúč; Host * patrí na koniec.
  • scp na jednotlivé súbory, rsync na priečinky (pozor na lomku a na --delete), sftp namiesto FTP.
  • S ssh -L sa dostanete k databáze cez šifrovaný tunel, zatiaľ čo databázový port zostáva zvonku zatvorený.
  • ProxyJump bezpečne preskočí cez prechodný server; je to lepšie ako agent forwarding.
  • Iné číslo portu znižuje šum, ale nezabezpečuje. Kľúče, ktoré neodstránite, fungujú ďalej.

Kvíz

1. Čo robí ssh -L 15432:127.0.0.1:5432 web1?



2. Prečo je tunel SSH k databáze lepší ako otvoriť port 5432 vo firewalle?



3. Presuniete SSH na port 2222. Aký je najdôležitejší účinok?



4. Vo vašom ~/.ssh/config je navrchu Host * s User root a nižšie Host web1 s User anna. Ako ktorý používateľ sa prihlásite na ssh web1?



5. Tvorca webu mal na vašom serveri vlastný kľúč SSH a už pre vás nepracuje. Čo NESTAČÍ?



Úloha

Úloha O2.3: SSH config a tunel. Na svojom počítači vytvorte ~/.ssh/config s prezývkou pre váš server, prihláste sa len pomocou ssh <bijnaam>, skopírujte súbor pomocou scp alebo rsync a vytvorte tunel s -L k službe, ktorá na vašom serveri počúva len na 127.0.0.1 (ak ešte nemáte databázu, použite port 22 samotného servera: ssh -L 2200:127.0.0.1:22 <bijnaam> a potom ssh -p 2200 anna@localhost). Odpovedzte na otázky o tom, čo tunel robí a prečo port nemusí byť otvorený.

Úloha O2.3: SSH config a tunel

Túto úlohu vykonávate sami, nikto ju nekontroluje. Odškrtnite, čo ste urobili, a označte úlohu ako splnenú.




Vaše zaškrtnutia a poznámky zostávajú iba v tomto prehliadači, nikam ich neposielame. Po prihlásení si v sekcii Moje kurzy uchovávame iba to, že ste úlohu splnili.

Ďalšie čítanie

Postupy v týchto článkoch platia pre VPS a panely WebOké; u iných poskytovateľov to funguje podobne.

Chvíľu strpenia…

Nastavte svoje domény

Pri každej doméne nastavte nameservery, prepojenie s hostingom a to, kto bude jej vlastníkom.

Načítavajú sa vaše domény…