Linux Secure Shell (SSH)

Linux Branje: 2 min

SSH (Secure Shell) je omrežni protokol, ki med dvema računalnikoma vzpostavi šifrirano povezavo, zato lahko oddaljeni računalnik varno upravljaš tudi prek nezanesljivega omrežja, na primer interneta. Prek povezave SSH lahko zaganjaš ukaze, kopiraš datoteke in vodiš tudi drug omrežni promet. Stare, nešifrirane protokole (telnet, rsh) je povsem nadomestil: oddaljeno upravljanje strežnikov Linux danes poteka skoraj izključno prek SSH.

V Linuxu je najbolj razširjena izvedba OpenSSH. Na strežniku povezave sprejema storitev sshd, privzeto na vratih TCP 22, odjemalec pa je ukaz ssh, ki je vgrajen v Linux, macOS in Windows 10 ter novejše.

Kako deluje?

  1. Identifikacija strežnika. Ob povezovanju strežnik pokaže svoj javni ključ (host key). Ob prvem povezovanju odjemalec pokaže njegov prstni odtis in vpraša, ali mu zaupaš. Po sprejetju pride ključ v datoteko ~/.ssh/known_hosts, odjemalec pa ga preveri ob vsakem poznejšem povezovanju.
  2. Šifriran kanal. Strani z izmenjavo ključev ustvarita skupen ključ, veljaven le za to povezavo, od tod naprej pa vsi podatki potujejo šifrirano.
  3. Identifikacija uporabnika. Ta lahko poteka z geslom ali s parom ključev. Pri overjanju s ključem zasebni ključ nikoli ne zapusti tvojega računalnika, strežnik pozna le javni ključ, zato je to varnejša metoda.

Povezovanje s strežnikom

Na svojem računalniku odpri terminal ali ukazni poziv in vpiši:

ssh felhasznalo@szervercime

Namesto felhasznalo vpiši uporabniško ime strežnika (pri VPS ob prvi prijavi običajno root), namesto szervercime pa naslov IP ali ime gostitelja strežnika. Če SSH ne teče na vratih 22, vrata navedi s stikalom -p: ssh -p 2222 felhasznalo@szervercime. Ob prvem povezovanju za sprejetje ključa strežnika vpiši besedo yes, nato vnesi geslo. Izstopiš z ukazom exit ali s kombinacijo tipk Ctrl+D.

Prvo povezovanje z našim KVM VPS iz sistemov Windows, macOS in Linux korak za korakom predstavlja vodnik za povezovanje z VPS prek SSH.

Nastavitev prijave s ključem

ssh-keygen -t ed25519
ssh-copy-id felhasznalo@szervercime

Prvi ukaz na tvojem računalniku ustvari par ključev (privzeto v datoteki ~/.ssh/id_ed25519 in id_ed25519.pub), drugi pa javni ključ kopira v datoteko ~/.ssh/authorized_keys na strežniku. Nato se lahko prijaviš brez gesla, s ključem. Zasebni ključ zaščiti z geslom in ga nikoli ne deli z nikomer.

Za kaj ga je še mogoče uporabiti?

  • Kopiranje datotek: tudi scp, sftp in rsync prenašajo datoteke prek SSH, glej: kopiranje datotek med strežniki.
  • Tuneli (tunneling): storitev, ki je na strežniku dosegljiva le lokalno, na primer podatkovna baza, je varno dosegljiva s tvojega računalnika, strežnik pa je mogoče uporabiti tudi kot posredniški strežnik SOCKS.
  • Nastavitve za udobje: v datoteki ~/.ssh/config lahko strežnikom daš kratka imena, skupaj z uporabniškim imenom, vrati in ključem, glej: uporaba konfiguracijske datoteke SSH.

Pogosta sporočila o napakah

  • Connection refused: storitev SSH na strežniku ne teče ali posluša na drugih vratih.
  • Connection timed out: požarni zid blokira vrata ali je naslov napačen.
  • Permission denied (publickey): strežnik dovoljuje le prijavo s ključem in ne najde ustreznega ključa.
  • REMOTE HOST IDENTIFICATION HAS CHANGED: ključ strežnika se je spremenil, na primer po ponovni namestitvi. Če si prepričan, da je to vzrok, stari vnos izbriši z ukazom ssh-keygen -R szervercime; če nisi, se ne poveži, ker lahko nekdo povezavo ugrabi.

O zaščiti strežnika SSH (obvezna prijava s ključem, omejitev prijave root) govori članek Varnostne nastavitve strežnika SSH.

Nazaj: Linux – članki (76)