Přejít na obsah

Nastavení cookies

Zvolte, které druhy cookies povolíte. Svou volbu můžete kdykoli změnit přes Nastavení cookies v dolní části každé stránky. Prohlášení o ochraně osobních údajů

Nezbytné

Vždy zapnuté

Potřebné pro přihlášení, uchování košíku a zapamatování vašich voleb. Jsou vždy zapnuté.

Které cookies?
  • weboke_sessie, weboke_klant, weboke_remember: vaše relace a trvalé přihlášení
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazení cen s DPH nebo bez DPH
  • wok_cookies: vaše volba cookies, 12 měsíců

Měří, která reklama vede k návštěvě nebo objednávce, abychom neplatili za reklamy, které nic nepřinášejí.

Které cookies?
  • Google Ads přes Google Tag Manager (_gcl_au, _gcl_aw), až 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: partner, který vás k nám doporučil (partnerský program), 60 dní

4,6

Země a jazyk

Každá země má vlastní web s cenami a DPH dané země.

Zobrazit

První přihlášení přes SSH

Modul 1: Váš první server · Doba čtení: 10 min.

Cíl lekce: Po této lekci se dokážete poprvé přihlásit k serveru přes SSH, ověřit otisk klíče serveru dříve, než mu začnete důvěřovat, a budete vědět, co dělat při varování, že se identita serveru změnila.

Klíčové pojmy: SSH, klient a server, port 22, banner s verzí, host key, otisk (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell a Terminál

Co je SSH

SSH (Secure Shell) je šifrované spojení, kterým server spravujete na dálku. Píšete na svém počítači a příkazy se provádějí na serveru. Vše, co jde po lince, včetně Vašeho hesla, je šifrované.

Spojení má dvě strany:

  • SSH klient na Vašem počítači: program ssh. V systémech macOS a Linux je součástí standardní instalace. Ve Windows 10 (od verze 1809) a Windows 11 je klient OpenSSH součástí systému Windows; používáte ho v PowerShellu nebo ve Windows Terminálu. Pokud chybí, přidáte ho v Nastavení, Volitelné funkce, "Klient OpenSSH". Fungují i programy s grafickým oknem, například PuTTY, ale v tomto kurzu používáme ssh.
  • SSH server na VPS: program sshd (z balíku OpenSSH). Ve výchozím nastavení naslouchá na portu 22.

Přihlášení

Přihlašujete se uživatelským jménem a adresou serveru:

PS C:\Users\anna> ssh root@192.0.2.10

Nebo jménem, pokud jste ho zadali do DNS (lekce 7.1):

anna@laptop:~$ ssh root@web1.example.com

Napoprvé uvidíte něco takového:

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 nejdůležitější okamžik celé lekce. Nepište naslepo yes.

Host key a otisk

Každý SSH server má jeden nebo více host keys: páry klíčů, kterými server prokazuje, kdo je. Veřejné části jsou na serveru uložené v /etc/ssh/, například /etc/ssh/ssh_host_ed25519_key.pub. Při každém spojení server ukáže, že má i tajnou část.

Otisk je krátké shrnutí (hash) takového veřejného klíče. OpenSSH standardně zobrazuje podobu SHA256: SHA256: a za ním 43 znaků.

Otázka "Are you sure you want to continue connecting?" znamená: Váš počítač tento server ještě nezná. Kdo zaručí, že komunikujete se svým VPS, a ne s někým, kdo provoz odposlouchává? Nikdo, dokud otisk sami neporovnáte s důvěryhodným zdrojem.

Tímto zdrojem je konzole Vašeho poskytovatele (lekce 1.2). Tam se serverem nekomunikujete přes síť. Přihlaste se do konzole a otisk si vypište:

root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)

Pokud se přesně shoduje s tím, co ukazuje klient, napište yes. Místo yes můžete také vložit samotný otisk; ssh ho pak porovná za Vás. Pokud se liší, zastavte se a zjistěte proč (špatná IP adresa, přeinstalovaný server, nebo něco vážnějšího).

Dávejte pozor na typ: klient uvádí typ klíče (ED25519, ECDSA nebo RSA). Porovnávejte otisk stejného typu. Mnoho obrazů systému vypisuje otisky do konzole také při prvním spuštění (cloud-init), mezi řádky jako BEGIN SSH HOST KEY FINGERPRINTS.

known_hosts a trust on first use

Když napíšete yes, uvidíte:

Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.

Klient uloží klíč do ~/.ssh/known_hosts (ve Windows C:\Users\<naam>\.ssh\known_hosts). Od této chvíle ho při každém spojení automaticky porovnává. Tento model se nazývá trust on first use (TOFU, důvěra při prvním použití): napoprvé musíte klíč zkontrolovat sami, potom ho hlídá klient.

Proto je ta první kontrola tak důležitá: pokud důvěřujete špatnému klíči, klient Vás potom už nikdy nevaruje.

Pracujete-li sami na počítači s Debianem nebo Ubuntu, jsou jména v known_hosts standardně hashovaná (HashKnownHosts yes v /etc/ssh/ssh_config), takže tam čitelné IP adresy neuvidíte. Ve Windows a macOS jsou uložené čitelně. Vyhledávání funguje všude pomocí:

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"

Někdy uvidíte toto varování:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.

Server ukazuje jiný klíč, než jaký zná Váš klient. ssh pak odmítne spojení navázat. Příčiny jsou dvojího druhu:

BěžnéPodezřelé
VPS jste přeinstalovali (nové host keys)Nic jste neměnili, a přesto je klíč jiný
IP adresa byla přidělena jinému serveruJste připojeni k cizí Wi-Fi síti
Host keys jste vědomě vyměniliOtisk v konzoli se liší od toho, co nyní vidí klient

Pokud existuje běžné vysvětlení, znovu zkontrolujte otisk v konzoli a teprve potom odstraňte starý řádek:

anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.

Při dalším spojení dostanete znovu otázku jako napoprvé a opět klíč zkontrolujete. Nikdy si do nastavení nedávejte StrictHostKeyChecking no, abyste se varování zbavili: vypnuli byste tím přesně tu ochranu, o kterou jde.

Banner s verzí

Dříve než se cokoli zašifruje, pošlou si klient a server jeden řádek textu: banner s verzí. Ten je viditelný pro kohokoli na internetu. Zobrazíte ho pomocí 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.5

Server zde uvádí, jaký protokol (2.0) a jaký software používá. Debian a Ubuntu za to připojují verzi balíku. Není to tajemství, které musíte skrývat: útočníci stejně zkoušejí všechno a chráníte se aktualizacemi (modul 4), ne jiným bannerem. Užitečné ale je, že podle banneru zvenku poznáte, zda na serveru opravdu běží aktualizovaná verze.

V AlmaLinuxu a Rocky Linuxu

Přihlášení a otisky fungují stejně. Služba se jmenuje sshd místo ssh (systemctl status sshd). Banner neobsahuje název distribuce, jen verzi OpenSSH.

Shrnutí

  • SSH je šifrované spojení k Vašemu serveru; ssh je klient, sshd server na portu 22.
  • Při prvním spojení klient zobrazí otisk host key. Porovnejte ho s výstupem ssh-keygen -lf v konzoli dříve, než napíšete yes.
  • Klient uloží klíč do ~/.ssh/known_hosts a nadále Vás varuje sám (trust on first use).
  • "REMOTE HOST IDENTIFICATION HAS CHANGED" je po přeinstalaci normální; jinak je to podezřelé. Starý řádek odstraňte až po kontrole, pomocí ssh-keygen -R.
  • Banner s verzí je veřejný; ochranu zajišťují aktualizace, ne skrývání.

Kvíz

1. S čím porovnáte otisk, který ssh zobrazí při prvním spojení?



2. K čemu slouží ~/.ssh/known_hosts?



3. Přeinstalovali jste svůj VPS a dostáváte "REMOTE HOST IDENTIFICATION HAS CHANGED". Jaký je správný postup?



4. Proč je u trust on first use tak důležitá první kontrola?



5. Co ukazuje banner s verzí SSH serveru?



Úkol

Úkol Z1.3: SSH banner a otisk klíče Vašeho serveru. Zadejte adresu svého serveru, verzi softwaru z banneru (například OpenSSH_9.6p1) a otisk ED25519, který jste si v konzoli vypsali pomocí ssh-keygen -lf. Program naváže jedno spojení na Váš SSH port, přečte banner a host key a porovná je. Nepřihlašuje se.

Úkol Z1.3: SSH banner a otisk klíče Vašeho serveru

Nepřihlašujeme se a nezkoušíme žádné heslo ani klíč. Nejprve prokážete, že server patří Vám: klikněte na „Zobrazit můj kód“ a umístěte na webový server Vašeho názvu hostitele soubor /.well-known/weboke-cursus-<code>.txt, který obsahuje pouze tento kód. Stahujeme jej přímo z každé kontrolované IP adresy (IPv4 a IPv6 zvlášť); TXT záznam se zde nepočítá. Kontrola probíhá z heavy.webawere.nl (185.158.167.16 a 2a07:ae80:100:0:185:158:167:16), nikoli z našeho webového serveru. Pouze pro přihlášené účastníky kurzu; nejvýše 6 kontrol za hodinu na server. U tohoto úkolu navážeme jedno spojení a přečteme pouze banner a klíč serveru; do Vašeho logu se nedostane žádný pokus o přihlášení.





Co vyplníte a co zjistíme, neukládáme. Váš prohlížeč si pamatuje Vaše odpovědi a to, zda jste úkol splnili. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol měli (téměř) správně; i to tam můžete odstranit.

Doporučujeme k přečtení

Chvíli strpení…

Nastavení vašich domén

U každé domény nastavte jmenné servery, propojení s hostingem a to, kdo bude držitelem.

Načítání vašich domén…