Modul 1 · 1.3
Az első SSH-bejelentkezés
Modul 1: Az első szervere · Olvasási idő: 10 perc
Tanulási cél: A lecke után Ön először be tud jelentkezni SSH-val a szerverére, ellenőrizni tudja a szerver ujjlenyomatát, mielőtt megbízna benne, és tudja, mit kell tennie, ha figyelmeztetést kap arról, hogy a szerver azonosítója megváltozott.
Kulcsfogalmak: SSH, kliens és szerver, 22-es port, verziószalag (banner), host key, ujjlenyomat (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell és Terminal
Mi az SSH?
Az SSH (Secure Shell) az a titkosított kapcsolat, amellyel egy szervert távolról kezelhet. Ön a saját számítógépén gépel, a parancsok pedig a szerveren futnak le. Minden, ami a vonalon áthalad, a jelszava is, titkosítva van.
A kapcsolatnak két oldala van:
- az SSH-kliens az Ön számítógépén: ez a
sshprogram. macOS-en és Linuxon alapból megtalálható. Windows 10 (1809-es verziótól) és Windows 11 alatt az OpenSSH-kliens a Windows része; PowerShellben vagy a Windows Terminalban használhatja. Ha hiányzik, a Beállítások, Választható szolgáltatások, „OpenSSH-ügyfél” menüpontban adhatja hozzá. Az ablakos programok, például a PuTTY, szintén működnek, de ebben a tanfolyamban asshprogramot használjuk. - az SSH-szerver a VPS-en: ez a
sshdprogram (az OpenSSH része). Alapértelmezés szerint a 22-es porton figyel.
Bejelentkezés
Egy felhasználónévvel és a szerver címével jelentkezik be:
PS C:\Users\anna> ssh root@192.0.2.10Vagy egy névvel, ha azt már beállította a DNS-ben (7.1. lecke):
anna@laptop:~$ ssh root@web1.example.comAz első alkalommal valami ilyesmit lát:
The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?Ez a lecke legfontosabb pillanata. Ne gépelje be vakon, hogy yes.
A host key és az ujjlenyomat
Minden SSH-szervernek van egy vagy több host keye: ezek olyan kulcspárok, amelyekkel a szerver igazolja, kicsoda. A nyilvános részek a szerveren a /etc/ssh/ helyen találhatók, például /etc/ssh/ssh_host_ed25519_key.pub. A szerver minden kapcsolatnál megmutatja, hogy birtokában van a titkos résznek.
Az ujjlenyomat egy ilyen nyilvános kulcs rövid összefoglalása (hash-e). Az OpenSSH alapértelmezés szerint az SHA256-os formát mutatja: SHA256:, majd 43 karakter.
Az "Are you sure you want to continue connecting?" kérdés azt jelenti: a számítógépe még nem ismeri ezt a szervert. Ki garantálja, hogy valóban az Ön VPS-ével beszél, és nem valakivel, aki elfogja a forgalmat? Senki, hacsak Ön össze nem veti az ujjlenyomatot egy megbízható forrással.
Ez a forrás a szolgáltatója konzolja (1.2. lecke). Ott nem a hálózaton keresztül kommunikál a szerverrel. Jelentkezzen be a konzolba, és kérdezze le az ujjlenyomatot:
root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)Ha ez pontosan megegyezik azzal, amit a kliens mutat, gépelje be: yes. A yes helyett magát az ujjlenyomatot is beillesztheti; ekkor a ssh végzi el Ön helyett az összehasonlítást. Ha eltér, álljon meg, és derítse ki, miért (rossz IP-cím, újratelepített szerver, vagy valami komolyabb).
Figyeljen a típusra: a kliens megnevezi a típust (ED25519, ECDSA vagy RSA). Mindig azonos típusú ujjlenyomatokat hasonlítson össze. Sok image az első indításkor a konzolra is kiírja az ujjlenyomatokat (cloud-init), például a BEGIN SSH HOST KEY FINGERPRINTS sorok között.
known_hosts és trust on first use
Ha begépeli, hogy yes, ezt látja:
Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.A kliens elmenti a kulcsot a ~/.ssh/known_hosts fájlba (Windowson C:\Users\<naam>\.ssh\known_hosts). Ettől kezdve minden kapcsolatnál automatikusan összehasonlít. Ezt a modellt trust on first use (TOFU, bizalom az első használatkor) néven ismerjük: az első alkalommal Önnek kell ellenőriznie, utána a kliens őrködik.
Ezért olyan fontos az első ellenőrzés: ha egy rossz kulcsban bízik meg, a kliens ezután soha többé nem fog figyelmeztetni.
Ha Ön maga is Debiant vagy Ubuntut futtató számítógépen dolgozik, a known_hosts fájlban a nevek alapértelmezés szerint hash-elve szerepelnek (HashKnownHosts yes a /etc/ssh/ssh_config fájlban), így ott nem lát olvasható IP-címeket. Windowson és macOS-en olvashatóan szerepelnek. A keresés mindenhol így működik:
anna@laptop:~$ ssh-keygen -F 192.0.2.10
# Host 192.0.2.10 found: line 3
|1|kP9...= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA..."REMOTE HOST IDENTIFICATION HAS CHANGED"
Előfordulhat, hogy ezt a figyelmeztetést látja:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.A szerver más kulcsot mutat, mint amit a kliense ismer. A ssh ilyenkor megtagadja a kapcsolódást. Kétféle ok lehetséges:
| Normális | Gyanús |
|---|---|
| Újratelepítette a VPS-t (új host keyek) | Semmit nem változtatott, mégis más a kulcs |
| Az IP-címet egy másik szerver kapta meg | Idegen wifihálózaton van |
| Szándékosan lecserélte a host keyeket | A konzolban látható ujjlenyomat eltér attól, amit a kliens most lát |
Ha van normális magyarázat, ellenőrizze újra az ujjlenyomatot a konzolban, és csak utána törölje a régi sort:
anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.A következő kapcsolódáskor ismét megkapja az első alkalommal látott kérdést, és újra ellenőriz. Soha ne állítsa be a StrictHostKeyChecking no opciót a beállításaiban, csak hogy eltüntesse a figyelmeztetést: ezzel éppen azt a védelmet kapcsolja ki, amelyről szó van.
A verziószalag (banner)
Mielőtt bármi titkosításra kerülne, a kliens és a szerver egy-egy sor szöveget küld egymásnak: ez a verziószalag (banner). Ezt az interneten bárki láthatja. A ssh -v paranccsal tekintheti meg:
anna@laptop:~$ ssh -v root@192.0.2.10 2>&1 | grep "remote software"
debug1: Remote protocol version 2.0, remote software version OpenSSH_9.6p1 Ubuntu-3ubuntu13.5A szerver itt közli, melyik protokollt (2.0) és milyen szoftvert használ. A Debian és az Ubuntu a csomagverziót is hozzáfűzi. Ez nem olyan titok, amelyet el kellene rejtenie: a támadók úgyis mindent kipróbálnak, és Ön frissítésekkel védekezik (4. modul), nem egy másik bannerrel. Hasznos viszont: a bannerből kívülről is látható, hogy a szervere valóban a frissített verziót futtatja-e.
AlmaLinuxon és Rocky Linuxon
A bejelentkezés és az ujjlenyomatok ugyanígy működnek. A szolgáltatás neve sshd a ssh helyett (systemctl status sshd). A banner nem tartalmazza a disztribúció nevét, csak az OpenSSH verzióját.
Összefoglalás
- Az SSH a szerveréhez vezető titkosított kapcsolat; a
ssha kliens, asshda szerver a 22-es porton. - Az első kapcsolódáskor a kliens megmutatja a host key ujjlenyomatát. Vesse össze a konzolban futtatott
ssh-keygen -lfkimenetével, mielőtt begépeli:yes. - A kliens elmenti a kulcsot a
~/.ssh/known_hostsfájlba, és ettől kezdve maga figyelmeztet (trust on first use). - A "REMOTE HOST IDENTIFICATION HAS CHANGED" üzenet újratelepítés után normális; egyébként gyanús. Régi sort csak ellenőrzés után töröljön, a
ssh-keygen -Rparanccsal. - A verziószalag nyilvános; a védelmet a frissítések adják, nem az elrejtés.
Kvíz
Feladat
Z1.3. feladat: A szerver SSH-bannere és ujjlenyomata. Adja meg a szervere címét, a bannerben szereplő szoftververziót (például OpenSSH_9.6p1) és azt az ED25519-ujjlenyomatot, amelyet a konzolban a ssh-keygen -lf paranccsal kérdezett le. A program egyetlen kapcsolatot létesít az SSH-portjával, beolvassa a bannert és a host keyt, majd összehasonlít. Nem jelentkezik be.
További olvasnivaló
- Bejelentkezés a VPS-re SSH-val (és SSH-kulcs létrehozása)
- Nem fér hozzá a VPS-éhez: mi a teendő?
- ssh-keygen(1), a -l, -F és -R opciók: https://manpages.debian.org/trixie/openssh-client/ssh-keygen.1.en.html
- ssh_config(5), StrictHostKeyChecking, FingerprintHash és HashKnownHosts: https://manpages.debian.org/trixie/openssh-client/ssh_config.5.en.html
- RFC 4253, 4.2. szakasz (a verziószalag): https://www.rfc-editor.org/rfc/rfc4253.html
