Modul 1 · 1.3
Slovenčina
Prvé prihlásenie cez SSH
Modul 1: Váš prvý server · Čas čítania: 10 minút
Cieľ lekcie: Po tejto lekcii sa po prvý raz prihlásite na svoj server cez SSH, overíte odtlačok servera skôr, než mu začnete dôverovať, a budete vedieť, čo robiť pri varovaní, že sa identita servera zmenila.
Kľúčové pojmy: SSH, klient a server, port 22, banner verzie, host key, odtlačok (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell a Terminal
Čo je SSH
SSH (Secure Shell) je šifrované spojenie, ktorým server spravujete na diaľku. Píšete na vlastnom počítači a príkazy sa vykonávajú na serveri. Všetko, čo ide po linke, aj vaše heslo, je zašifrované.
Existujú dve strany:
- SSH klient na vašom počítači: program
ssh. V macOS a Linuxe je štandardne k dispozícii. Vo Windows 10 (od verzie 1809) a Windows 11 je klient OpenSSH súčasťou Windows; používate ho v PowerShell alebo vo Windows Terminal. Ak chýba, pridáte ho cez Nastavenia, Voliteľné funkcie, „Klient OpenSSH“. Fungujú aj programy s oknami, napríklad PuTTY, v tomto kurze však používamessh. - SSH server na VPS: program
sshd(z OpenSSH). Štandardne počúva na porte 22.
Prihlásenie
Prihlasujete sa používateľským menom a adresou servera:
PS C:\Users\anna> ssh root@192.0.2.10Alebo menom, ak ste ho zadali do DNS (lekcia 7.1):
anna@laptop:~$ ssh root@web1.example.comPri prvom pripojení uvidíte niečo takéto:
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])?Toto je najdôležitejší okamih tejto lekcie. Nepíšte naslepo yes.
Host key a odtlačok
Každý SSH server má jeden alebo viac host keys: páry kľúčov, ktorými server preukazuje, kým je. Verejné časti sú na serveri v /etc/ssh/, napríklad /etc/ssh/ssh_host_ed25519_key.pub. Pri každom spojení server ukáže, že má tajnú časť.
Odtlačok je krátke zhrnutie (hash) takého verejného kľúča. OpenSSH štandardne zobrazuje tvar SHA256: SHA256: a za ním 43 znakov.
Otázka "Are you sure you want to continue connecting?" znamená: váš počítač tento server ešte nepozná. Kto zaručí, že komunikujete s vaším VPS, a nie s niekým, kto zachytáva prevádzku? Nikto, pokiaľ odtlačok neporovnáte s dôveryhodným zdrojom.
Týmto zdrojom je konzola vášho poskytovateľa (lekcia 1.2). V nej so serverom nekomunikujete cez sieť. Prihláste sa do konzoly a vypíšte odtlačok:
root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)Ak sa presne zhoduje s tým, čo ukazuje klient, napíšte yes. Namiesto yes môžete vložiť aj samotný odtlačok; ssh ho potom porovná za vás. Ak sa líši, zastavte sa a zistite prečo (nesprávna IP adresa, preinštalovaný server alebo niečo vážnejšie).
Dávajte pozor na typ: klient uvádza typ (ED25519, ECDSA alebo RSA). Porovnávajte odtlačok rovnakého typu. Mnohé obrazy (images) vypíšu odtlačky do konzoly aj pri prvom štarte (cloud-init), medzi riadky ako BEGIN SSH HOST KEY FINGERPRINTS.
known_hosts a trust on first use
Keď napíšete yes, uvidíte:
Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.Klient uloží kľúč do ~/.ssh/known_hosts (vo Windows C:\Users\<naam>\.ssh\known_hosts). Odteraz ho pri každom spojení automaticky porovnáva. Tento model sa nazýva trust on first use (TOFU, dôvera pri prvom použití): prvý raz ho musíte overiť sami, potom ho stráži klient.
Preto je prvá kontrola taká dôležitá: ak dôverujete nesprávnemu kľúču, klient vás už potom nikdy nevaruje.
Ak sami pracujete na počítači s Debianom alebo Ubuntu, mená v known_hosts sú štandardne zahashované (HashKnownHosts yes v /etc/ssh/ssh_config), takže tam čitateľné IP adresy neuvidíte. Vo Windows a macOS sú v ňom čitateľne. Vyhľadávanie funguje všade takto:
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"
Niekedy uvidíte toto varovanie:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.Server ukazuje iný kľúč, než aký pozná váš klient. ssh sa potom odmietne pripojiť. Príčiny sú dvojakého druhu:
| Bežné | Podozrivé |
|---|---|
| VPS ste preinštalovali (nové host keys) | Nič ste nezmenili, a predsa je kľúč iný |
| IP adresa bola pridelená inému serveru | Ste pripojení na cudzej sieti Wi-Fi |
| Host keys ste vedome vymenili | Odtlačok v konzole sa líši od toho, čo teraz vidí klient |
Ak existuje bežné vysvetlenie, znova overte odtlačok v konzole a až potom odstráňte starý riadok:
anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.Pri ďalšom spojení dostanete opäť otázku ako pri prvom pripojení a znova overíte odtlačok. Nikdy si do nastavení nedávajte StrictHostKeyChecking no, aby ste sa varovania zbavili: vypnete tým presne tú ochranu, o ktorú ide.
Banner verzie
Skôr než sa čokoľvek zašifruje, pošlú si klient a server riadok textu: banner verzie. Ten je viditeľný pre každého na internete. Zobrazíte ho pomocou ssh -v:
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.5Server tu oznamuje, aký protokol (2.0) a aký softvér používa. Debian a Ubuntu za to pridávajú verziu balíka. Nie je to tajomstvo, ktoré treba skrývať: útočníci aj tak skúšajú všetko a chránite sa aktualizáciami (modul 4), nie iným bannerom. Užitočné však je, že podľa bannera zvonku vidíte, či váš server naozaj beží na aktualizovanej verzii.
V AlmaLinuxe a Rocky Linuxe
Prihlasovanie a odtlačky fungujú rovnako. Služba sa volá sshd namiesto ssh (systemctl status sshd). Banner neobsahuje názov distribúcie, iba verziu OpenSSH.
Zhrnutie
- SSH je šifrované spojenie s vaším serverom;
sshje klient,sshdserver na porte 22. - Pri prvom spojení klient zobrazí odtlačok host key. Porovnajte ho s výstupom
ssh-keygen -lfv konzole skôr, než napíšeteyes. - Klient uloží kľúč do
~/.ssh/known_hostsa odteraz varuje sám (trust on first use). - "REMOTE HOST IDENTIFICATION HAS CHANGED" je po preinštalovaní bežné; inak je to podozrivé. Starý riadok odstráňte len po kontrole, pomocou
ssh-keygen -R. - Banner verzie je verejný; ochranu prinášajú aktualizácie, nie skrývanie.
Kvíz
Úloha
Úloha Z1.3: SSH banner a odtlačok vášho servera. Zadajte adresu svojho servera, verziu softvéru z bannera (napríklad OpenSSH_9.6p1) a odtlačok ED25519, ktorý ste v konzole vypísali pomocou ssh-keygen -lf. Program vytvorí jedno spojenie na váš SSH port, prečíta banner a host key a porovná ich. Neprihlasuje sa.
Ďalšie čítanie
- Prihlásenie do VPS cez SSH (a vytvorenie SSH kľúča)
- Žiadny prístup k VPS: čo teraz?
- ssh-keygen(1), voľby -l, -F a -R: https://manpages.debian.org/trixie/openssh-client/ssh-keygen.1.en.html
- ssh_config(5), StrictHostKeyChecking, FingerprintHash a HashKnownHosts: https://manpages.debian.org/trixie/openssh-client/ssh_config.5.en.html
- RFC 4253, oddiel 4.2 (banner verzie): https://www.rfc-editor.org/rfc/rfc4253.html
