Uporaba SSH: celoten vodnik za varno oddaljeno upravljanje strežnikov

Branje: 9 min

SSH (Secure Shell) je osnovno orodje za upravljanje strežnikov Linux: šifrirana povezava, prek katere lahko na oddaljenem računalniku izvajaš ukaze, kopiraš datoteke in odpreš varen tunel do drugih storitev. Če najameš VPS, ga boš prek nje nameščal, posodabljal in nastavljal; če imaš gostovanje cPanel, lahko z njo izvajaš ukaze WP-CLI ali Composer in upravljaš svoje repozitorije Git.

V tem vodniku pojasnimo, kako deluje SSH, kako se povežeš iz sistemov Windows, macOS in Linux, kako namesto gesla nastaviš prijavo s ključem, kako kopiraš datoteke, kako zavaruješ dostop SSH do strežnika in kaj pomenijo najpogostejša sporočila o napakah.

Kako deluje SSH?

SSH deluje po načelu odjemalec–strežnik: na strežniku teče storitev SSH (na Linuxu običajno proces OpenSSH sshd), ki privzeto sprejema povezave na vratih TCP 22, na tvojem računalniku pa se nanjo poveže odjemalec SSH.

Ob vzpostavitvi povezave strani izmenjata šifrirne ključe, zato vse, kar nato potuje po omrežju (geslo, ukazi in njihovi rezultati, datoteke), potuje šifrirano. Zato je SSH nadomestil stari, nešifrirani Telnet in zato je SFTP, ki temelji na SSH, boljši od navadnega FTP, ki tudi geslo pošlje v berljivi obliki.

Ob prvi povezavi odjemalec pokaže prstni odtis strežnika (fingerprint) in vpraša, ali mu zaupaš. Po potrditvi si ga zapomni (v datoteki ~/.ssh/known_hosts), in če naslednjič na istem naslovu vidi drugačen prstni odtis, opozori. To varuje pred tem, da bi nekdo prestregel povezavo v imenu strežnika; če se opozorilo pojavi nepričakovano (strežnika nisi znova namestil), ne nadaljuj.

Video: How Secure Shell Works (SSH) - Computerphile (Computerphile, v angleščini)

Za kaj jo lahko uporabiš?

  • Upravljanje strežnika: nameščanje in posodabljanje paketov, urejanje konfiguracijskih datotek, ponovni zagon storitev, branje dnevnikov.
  • Prenos datotek: SFTP, SCP in rsync, šifrirano.
  • Razvojno delo: operacije Git, WP-CLI, Composer, npm, varnostno kopiranje in obnova podatkovne baze iz ukazne vrstice.
  • Tunel: varen dostop s tvojega računalnika do storitve, ki teče na strežniku in od zunaj ni dosegljiva (na primer podatkovna baza ali oddaljeno namizje).

Kje je SSH na voljo pri aWh?

  • KVM VPS: popoln dostop SSH s pravicami root.
  • Gostovanje cPanel: od paketa cP Premium naprej, znotraj lastnega računa gostovanja (zaradi CloudLinux CageFS vidiš le svoje datoteke).
  • Statično gostovanje: prenos datotek SFTP, brez dostopa do ukazne vrstice.
  • Spletno gostovanje (KeyHelp): SSH ni na voljo, datoteke upravljaš prek FTP ali upravitelja datotek.

Povezovanje

V vsakem primeru potrebuješ uporabniško ime in naslov strežnika, na primer root@203.0.113.10 ali felhasznalo@szerver.awh.hu.

Windows

V sistemih Windows 10 in 11 je odjemalec OpenSSH vgrajen. Odpri PowerShell ali Terminal in vnesi:

ssh felhasznalo@203.0.113.10

Pri nestandardnih vratih: ssh -p 2222 felhasznalo@203.0.113.10.

Če želiš grafični program, je PuTTY klasična izbira, MobaXterm pa ponuja tudi vgrajen brskalnik SFTP; za prenos datotek SFTP uporabljata tudi WinSCP in FileZilla.

macOS in Linux

Odpri Terminal in uporabi isti ukaz: ssh felhasznalo@203.0.113.10. Odjemalec OpenSSH je v obeh sistemih privzeto nameščen.

S telefona

Na Androidu z aplikacijo Termius ali JuiceSSH, na iPhonu s Termius ali Blink Shell je udobno uporaben za hitra preverjanja in posamezne ukaze.

Korake prve povezave z VPS opisuje tudi članek v bazi znanja o povezavi SSH z VPS.

Prijava s ključem namesto gesla

Prijava SSH z geslom je najpogostejša tarča napadov: avtomatizirani boti nenehno preizkušajo gesla. Overjanje s parom ključev je veliko varnejše: zasebni ključ ostane na tvojem računalniku, pripadajoči javni ključ pa gre na strežnik. Ob prijavi strežnik preveri, ali imaš zasebni ključ, ne da bi ta potoval po omrežju.

1. Ustvarjanje para ključev (enako v Windows PowerShell, na macOS in Linuxu):

ssh-keygen -t ed25519 -C "laptop-2026"

Ed25519 je danes priporočena vrsta ključa: kratek, hiter in močan. Če ga star sistem ne podpira, uporabi ključ -t rsa -b 4096. Vnesi geslo ključa (passphrase): če prenosnik pride v napačne roke, ključa brez njega ni mogoče uporabiti. Da ga ni treba vsakič vtipkati, si ga ssh-agent zapomni za čas seje.

2. Nalaganje javnega ključa na strežnik:

ssh-copy-id felhasznalo@203.0.113.10

V sistemu Windows, kjer ni ssh-copy-id, vsebino datoteke C:\Users\<ime>\.ssh\id_ed25519.pub kopiraj na konec datoteke ~/.ssh/authorized_keys na strežniku. Na gostovanju cPanel lahko ključ naložiš ali ustvariš tudi v vmesniku; korake opisuje članek o ustvarjanju in nalaganju ključa SSH v cPanelu.

3. Preizkusi v novem oknu, ali se lahko prijaviš s ključem, in šele nato onemogoči prijavo z geslom (glej spodaj). Če jo onemogočiš prej, se lahko zakleneš ven.

Več ključev, več strežnikov: na strežnik lahko dodaš več javnih ključev (po enega na vrstico v datoteki authorized_keys), tako da ima lahko vsaka tvoja naprava ali sodelavec svoj ključ, ki ga lahko ločeno prekličeš. Na svojem računalniku lahko v datoteki ~/.ssh/config za vsak strežnik določiš naslov, uporabnika, vrata in ključ:

Host webszerver
    HostName 203.0.113.10
    User janos
    Port 22
    IdentityFile ~/.ssh/id_ed25519

Nato zadošča: ssh webszerver.

Kopiranje datotek prek SSH

  • SFTP: z grafičnim programom (FileZilla, WinSCP, Cyberduck) ali iz ukazne vrstice (sftp felhasznalo@szerver). Varna alternativa navadnemu FTP.
  • SCP: hitro kopiranje posamezne datoteke: scp mentes.tar.gz felhasznalo@szerver:/home/felhasznalo/.
  • rsync: sinhronizacija map, prenese le spremembe, zato je pri velikih količinah in ponovnem kopiranju najhitrejši: rsync -avz ./public_html/ felhasznalo@szerver:/var/www/oldal/.

Podrobno uporabo vseh treh orodij predstavlja članek o uporabi scp, rsync in sftp.

Koristne informacije

  • Dolgotrajni ukazi: če se povezava prekine, se ustavi tudi ukaz, ki teče. Uporabi tmux ali screen: seja teče na strežniku naprej in se lahko pozneje znova povežeš nanjo. O tem piše članek o uporabi tmux in screen.
  • Tunel: po ukazu ssh -L 3307:localhost:3306 felhasznalo@szerver na svojem računalniku na naslovu localhost:3307 dosežeš podatkovno bazo strežnika, ne da bi odprl vrata 3306.
  • Kdo se je prijavil? Ukaz last pokaže prejšnje prijave, who trenutno prijavljene; podroben dnevnik da journalctl -u ssh (Debian, Ubuntu) ali journalctl -u sshd (AlmaLinux, Rocky Linux).
  • Stalni naslov IP za SSH ni potreben, a če ga imaš, lahko na požarnem zidu dovoliš prijavo le z njega, kar je zelo učinkovita zaščita.

Varnost strežnika SSH na VPS

Vrata SSH sveže nameščenega VPS v nekaj minutah dosežejo samodejni preizkuševalci gesel. Z naslednjimi nastavitvami odpravimo večino tveganja.

  1. Lasten uporabnik s pravicami sudo, ki ga za vsakdanje delo uporabljaj namesto roota.
  2. Prijava s ključem, nato pa onemogočanje prijave z geslom. V datoteki /etc/ssh/sshd_config (ali v datoteki pod /etc/ssh/sshd_config.d/):

    PasswordAuthentication no
    PermitRootLogin prohibit-password
    

    Če že imaš lastnega uporabnika sudo, lahko prijavo kot root povsem prepoveš: PermitRootLogin no. Po shranjevanju preveri nastavitev (sudo sshd -t), znova zaženi storitev (sudo systemctl restart ssh ali sshd) in prijavo preizkusi v novem oknu, preden zapreš staro.

  3. Fail2ban: po neuspešnih poskusih samodejno blokira naslov IP napadalca. O namestitvi piše članek o nastavitvi fail2ban.
  4. Požarni zid: odprta naj bodo le potrebna vrata, in če imaš stalen naslov IP, dovoli SSH samo z njega.
  5. Posodobitve: ranljivosti se pojavljajo tudi v OpenSSH (»regreSSHion« iz leta 2024 je na primer na neposodobljenih strežnikih omogočal oddaljeno izvajanje kode brez gesla), zato vklopi samodejne varnostne posodobitve.
  6. Sprememba vrat (na primer 2222 namesto 22) zmanjša šum v dnevnikih, a sama po sebi ne varuje; prijave s ključem in Fail2ban ne nadomešča. Če jih spremeniš, odpri nova vrata tudi na požarnem zidu, na AlmaLinuxu in Rocky Linuxu pa jih moraš dovoliti tudi v SELinuxu.

Podrobnosti opisujeta naš članek v bazi znanja o varnostnih nastavitvah strežnika SSH in naš varnostni vodnik za VPS.

Če izgubiš zasebni ključ, v strežnik prideš le z drugim, še veljavnim ključem ali geslom. Zato je vredno imeti dostop z vsaj dveh naprav (ali z varno shranjenim rezervnim ključem). Če si izgubil vse, nam pri VPS aWh piši in pomagali ti bomo znova pridobiti dostop. Če je tvoj ključ morda prišel v nepooblaščene roke, njegov javni del izbriši iz datoteke authorized_keys na vseh strežnikih.

Pogosta sporočila o napakah

  • Connection timed out: paketi ne pridejo do strežnika. Naslov IP ali vrata so napačni, požarni zid (na strežniku ali v tvojem omrežju) blokira ali strežnik ne teče. Če uporabljaš omejitev IP ali Fail2ban, je morda blokiran prav tvoj naslov IP.
  • Connection refused: strežnik je dosegljiv, vendar na teh vratih ne teče storitev SSH. Vrata so napačna ali pa se je sshd ustavil.
  • Permission denied (publickey): strežnik ne sprejme ključa. Uporabniško ime je napačno, odjemalec ne ponudi pravega ključa (določiš ga s stikalom -i) ali pa so na strežniku dovoljenja napačna: mapa ~/.ssh naj ima 700, datoteka authorized_keys pa 600.
  • REMOTE HOST IDENTIFICATION HAS CHANGED: prstni odtis strežnika se je spremenil. Če si strežnik znova namestil, je to pričakovano: izbriši stari vnos (ssh-keygen -R 203.0.113.10). Če ne, se ne poveži, dokler ne veš, zakaj se je spremenil.
  • Too many authentication failures: odjemalec je preizkusil preveč ključev. Pravega določi s stikalom -i ali v datoteki ~/.ssh/config (IdentitiesOnly yes).

Povzetek

SSH je varna osnova upravljanja strežnikov Linux. Iz sistemov Windows, macOS in Linux se lahko povežeš z vgrajenim odjemalcem, namesto gesla pa uporabljaj ključ Ed25519, zaščiten z geslom ključa. Na VPS naj bo tvoje prvo opravilo nastavitev prijave s ključem, onemogočanje prijave z geslom in kot root, Fail2ban in požarni zid, datoteke pa namesto prek FTP premikaj prek SFTP ali z rsync.

Strežnikom KVM VPS aWh pripada popoln dostop SSH s pravicami root, na gostovanjih cPanel pa je SSH na voljo od paketa Premium naprej.

Pogosta vprašanja

Je SSH varnejši od FTP?

Da. FTP geslo in datoteke pošilja nešifrirano, SFTP, ki temelji na SSH, pa šifrira vse. Če tvoje gostovanje to omogoča, vedno uporabljaj SFTP.

Katerega odjemalca SSH naj uporabim v sistemu Windows 11?

Vgrajeni odjemalec OpenSSH v PowerShellu ali Terminalu; če potrebuješ grafični program, PuTTY ali MobaXterm, za prenos datotek pa WinSCP.

Kaj storiti, če sem pozabil geslo svojega ključa?

Gesla ključa ni mogoče obnoviti. Ustvari nov par ključev in novi javni ključ naloži na strežnik z drugim, delujočim dostopom; starega izbriši iz datoteke authorized_keys.

Ali lahko na enem računalniku uporabljam več ključev SSH?

Da. Ustvari ločen ključ na primer za službo in za lastne projekte, v datoteki ~/.ssh/config pa za vsak strežnik določi, katerega naj uporabi odjemalec.

Kako zaženem ukaz, da teče tudi po odjavi?

Zaženi ga v seji tmux ali screen ali v obliki nohup parancs &. Najboljši je tmux, ker se lahko pozneje tudi znova povežeš.

Ali za SSH potrebujem stalen naslov IP?

Ne, a če ga imaš, lahko na požarnem zidu dovoliš prijavo le z njega, kar je zelo učinkovita zaščita.

Je SSH v javnem omrežju Wi-Fi varen?

Da, povezava je šifrirana. Bodi pa pozoren na prstni odtis strežnika: če se nepričakovano spremeni, se ne poveži.

Ali moram spremeniti vrata 22?

Ni obvezno. Zmanjša število samodejnih poskusov, vidnih v dnevnikih, pravo zaščito pa dajo prijava s ključem, prepoved prijave z geslom in Fail2ban.

Nazaj na blog