Preskoči na vsebino

Nastavitve piškotkov

Za vsako vrsto izberite, katere piškotke dovolite. Svojo izbiro lahko kadar koli spremenite prek povezave Nastavitve piškotkov na dnu vsake strani. Izjava o zasebnosti

Nujni

Vedno vklopljeno

Potrebni so za prijavo, shranjevanje košarice in pomnjenje Vaših izbir. Vedno so vklopljeni.

Kateri piškotki?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša seja in ohranjanje prijave
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cen z DDV ali brez DDV
  • wok_cookies: Vaša izbira glede piškotkov, 12 mesecev

Meri, kateri oglas vodi do obiska ali naročila, da ne plačujemo za oglase, ki ne prinesejo ničesar.

Kateri piškotki?
  • Google Ads prek Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, oglasi v ChatGPT
  • wok_aff: prek katerega partnerja ste prišli k nam (partnerski program), 60 dni

4,6

Država in jezik

Vsaka država ima svojo spletno stran, s cenami in DDV za to državo.

Prikaži

Pametna uporaba SSH

Modul 2: SSH in ključi · Čas branja: 10 minut

Učni cilj: Po tej lekciji boste SSH vsak dan lahko udobno uporabljali z lastno konfiguracijsko datoteko, kopirali datoteke s scp in rsync ter prek tunela dostopali do podatkovne baze, ne da bi morali vrata podatkovne baze odpreti proti internetu.

Ključni pojmi: ~/.ssh/config, Host, HostName, User, IdentityFile, scp, rsync, sftp, posredovanje vrat (port forwarding), -L, tunel, ProxyJump, ServerAliveInterval, druga številka vrat, preklic ključa

Manj tipkanja z ~/.ssh/config

Po nekaj tednih boste tole vtipkali več desetkrat na dan:

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

S konfiguracijsko datoteko za odjemalca postane to krajše in naredite manj napak. Datoteka je na Vašem lastnem računalniku: ~/.ssh/config (Windows: C:\Users\anna\.ssh\config, brez končnice).

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

Zdaj je preprosto:

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

Kaj naredijo te vrstice?

  • Host je vzdevek, ki ga izberete sami. Vpišete ga za ssh, scp in rsync.
  • HostName je pravi naslov: naslov IP ali ime, ki je vpisano v DNS.
  • User in Port sta uporabniško ime in vrata, tako da si jih Vam ni treba več zapomniti.
  • IdentityFile določa ključ. To je priročno, če imate več ključev; brez te vrstice ssh poskusi Vaše privzete ključe.
  • ServerAliveInterval 60 vsakih 60 sekund pošlje majhen znak življenja. Številni domači usmerjevalniki in omrežja wifi tiho povezavo prekinejo po nekaj minutah; s tem Vaša seja ostane odprta.

Tudi tu velja, da šteje prva vrednost, tako kot pri strežniku. Splošna pravila, kot je Host *, zato postavite na dno datoteke.

Kopiranje datotek: scp, rsync in sftp

scp kopira datoteko v enaki obliki kot cp, vendar s predpono host::

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

rsync je pametnejši pri mapah in velikih količinah: pošlje samo tisto, kar se je spremenilo, in lahko nadaljuje prekinjeno kopiranje. Nameščen mora biti na obeh straneh (apt install rsync).

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

Bodite pozorni na poševnico za ./site/: s poševnico rsync kopira vsebino mape, brez poševnice pa mapo samo (takrat dobite /var/www/example.com/site/). Če niste prepričani, najprej poskusite z --dry-run, in bodite zelo previdni z --delete, ki na prejemni strani izbriše vse, česar pri Vas ni.

sftp in grafični programi, kot sta FileZilla ali WinSCP, uporabljajo isto povezavo SSH in isti ključ. Ločen strežnik FTP torej ni potreben. Staromodnega strežnika FTP na VPS ne priporočamo: navaden FTP Vaše geslo pošlje po omrežju nešifrirano.

Tunel namesto odprtih vrat

To je morda najkoristnejše, kar zmore SSH. Recimo, da na Vašem strežniku teče podatkovna baza PostgreSQL. Do nje želite dostopati s prenosnika z grafičnim programom. Skušnjava je velika, da bi vrata 5432 odprli proti internetu. Tega ne storite: odprta vrata podatkovnih baz so eden največjih vzrokov za uhajanje podatkov (lekcija 10.2), tečaj pa bo pozneje od zunaj preveril, ali so zaprta (naloga Z5.1).

Z lokalnim posredovanjem vrat (local port forwarding) SSH ustvari tunel:

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

To preberite tako: »poslušaj na mojem prenosniku na vratih 5432 in vse, kar tja prispe, pošlji skozi povezavo SSH do 127.0.0.1:5432, gledano s strežnika«. Dokler je ta seja odprta, svoj program za podatkovne baze povežete z localhost, vrata 5432 na Vašem lastnem prenosniku, in pridete do podatkovne baze na strežniku.

Zakaj je to tako dobro?

  • Podatkovna baza na strežniku posluša samo na 127.0.0.1 in je od zunaj nedosegljiva.
  • Povezavo šifrira SSH, tudi če podatkovna baza sama nima šifriranja.
  • Dostop ima samo, kdor se lahko prijavi prek SSH. Uporabljate torej močno zaščito, ki jo že imate.

Če na Vašem prenosniku na 5432 že nekaj teče, na levi izberite drugo številko: -L 15432:127.0.0.1:5432, in se povežite na vrata 15432. Če tunel vpišete v ~/.ssh/config, ga imate vedno pri roki:

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

Z ssh -N web1-db dobite samo tunel, brez ukazne vrstice.

Prek vmesnega strežnika: ProxyJump

Včasih je strežnik dosegljiv samo prek drugega, na primer strežnik podatkovne baze brez javnega naslova IP za Vašim spletnim strežnikom. ProxyJump prek prvega strežnika skoči naprej do drugega:

Host db1
    HostName 10.0.0.5
    User anna
    ProxyJump web1

Razlika s posredovanjem agenta (agent forwarding, lekcija 2.1): pri ProxyJump šifriranje teče od začetka do konca med Vašim prenosnikom in db1. Vmesni strežnik samo posreduje pakete in Vašega ključa ne more uporabiti.

Druga številka vrat: da ali ne?

Številni priročniki priporočajo, da SSH prestavite na druga vrata, na primer 2222. Kaj to v resnici naredi?

  • Zmanjša šum: večina samodejnih poskusov ugibanja preizkuša samo vrata 22. Vaš dnevnik postane mirnejši.
  • To ni zaščita. Pregledovalnik, ki preveri vsa vrata, SSH v nekaj sekundah najde po pasici z različico.

S ključi in izklopljeno prijavo z geslom (lekcija 2.2) so vrata za varnost malo pomembna. Če jih vseeno želite zamenjati, to storite v pravem vrstnem redu: odprite nova vrata v požarnem zidu, SSH naj posluša na obeh vratih, preizkusite v drugem oknu in šele nato zaprite stara vrata. Na Ubuntu 24.04 in novejših sodita k temu systemctl daemon-reload in systemctl restart ssh.socket (lekcija 2.2). Ne pozabite, da ima tudi Vaš ponudnik morda požarni zid.

Preklic dostopa

Je imel nekdanji sodelavec ali izdelovalec spletnih strani ključ na Vašem strežniku in za Vas ne dela več? Preklic dostopa je preprost, če imate pregled:

  1. Preglejte vse ključe: ssh-keygen -lf ~/.ssh/authorized_keys, in to storite za vsakega uporabnika (tudi za /root/.ssh/authorized_keys).
  2. Odstranite vrstico te osebe.
  3. Če je uporabljal lasten uporabniški račun, ga zaklenite (lekcija 3.1) in preverite, ali je bil v skupini sudo (lekcija 3.2).
  4. Če je videl gesla, na primer geslo podatkovne baze v konfiguracijski datoteki, zamenjajte tudi ta.

Navaden ključ nima datuma poteka. Kar ne odstranite, deluje naprej, še leta pozneje. Če nekomu dodelite začasen dostop, lahko pred njegovo vrstico v authorized_keys postavite možnost expiry-time="20261231"; po tem datumu strežnik ključ zavrne.

Povzetek

  • ~/.ssh/config na Vašem lastnem računalniku za vsak strežnik hrani ime, uporabnika, vrata in ključ; Host * sodi na dno.
  • scp za posamezne datoteke, rsync za mape (pazite na poševnico in na --delete), sftp namesto FTP.
  • Z ssh -L dosežete podatkovno bazo prek šifriranega tunela, vrata podatkovne baze pa od zunaj ostanejo zaprta.
  • ProxyJump varno skoči prek vmesnega strežnika; to je boljše od posredovanja agenta.
  • Druga številka vrat zmanjša šum, a ne ščiti. Ključi, ki jih ne odstranite, delujejo naprej.

Kviz

1. Kaj naredi ssh -L 15432:127.0.0.1:5432 web1?



2. Zakaj je tunel SSH do podatkovne baze boljši od odpiranja vrat 5432 v požarnem zidu?



3. SSH prestavite na vrata 2222. Kateri je najpomembnejši učinek?



4. V Vaši ~/.ssh/config je na vrhu Host * z User root, nižje pa Host web1 z User anna. Kot kateri uporabnik se prijavite pri ssh web1?



5. Izdelovalec spletnih strani je imel lasten ključ SSH na Vašem strežniku in za Vas ne dela več. Kaj NI dovolj?



Naloga

Naloga O2.3: Konfiguracija SSH in tunel. Na svojem računalniku ustvarite ~/.ssh/config z vzdevkom za svoj strežnik, se prijavite samo z ssh <bijnaam>, kopirajte datoteko s scp ali rsync in z -L ustvarite tunel do storitve, ki na Vašem strežniku posluša samo na 127.0.0.1 (če podatkovne baze še nimate, uporabite vrata 22 samega strežnika: ssh -L 2200:127.0.0.1:22 <bijnaam> in nato ssh -p 2200 anna@localhost). Odgovorite na vprašanja o tem, kaj tunel naredi in zakaj vrat ni treba odpreti.

Naloga O2.3: Konfiguracija SSH in tunel

To nalogo opravite sami; nihče je ne pregleda. Odkljukajte, kar ste naredili, in nalogo označite kot opravljeno.




Vaše kljukice in zapiski ostanejo samo v tem brskalniku, nikamor jih ne pošiljamo. Če ste prijavljeni, v Moji tečaji shranimo samo podatek, da ste nalogo opravili.

Za nadaljnje branje

Koraki v teh člankih veljajo za VPS-je in nadzorne plošče WebOké; pri drugih ponudnikih deluje podobno.

Trenutek…

Nastavite svoje domene

Za vsako domeno uredite imenske strežnike, povezavo z gostovanjem in kdo bo imetnik.

Nalaganje Vaših domen…