Modul 1 · 1.3
Prva SSH prijava
Modul 1: Vaš prvi poslužitelj · Vrijeme čitanja: 10 minuta
Cilj učenja: Nakon ove lekcije moći ćete se prvi put prijaviti na svoj poslužitelj putem SSH-a, provjeriti otisak (fingerprint) poslužitelja prije nego što mu povjerujete i znati što učiniti kad dobijete upozorenje da se identitet poslužitelja promijenio.
Ključni pojmovi: SSH, klijent i poslužitelj, priključak 22, banner s verzijom, host key, otisak (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell i Terminal
Što je SSH
SSH (Secure Shell) je šifrirana veza kojom poslužiteljem upravljate na daljinu. Vi tipkate na svojem računalu, a naredbe se izvršavaju na poslužitelju. Sve što prolazi vezom, uključujući Vašu lozinku, je šifrirano.
Postoje dvije strane:
- SSH klijent na Vašem računalu: program
ssh. Na macOS-u i Linuxu dolazi standardno. Na Windows 10 (od verzije 1809) i Windows 11 OpenSSH klijent je dio sustava Windows; koristite ga u PowerShellu ili Windows Terminalu. Ako ga nema, dodajte ga putem Postavke, Dodatne značajke, "OpenSSH klijent". Programi s prozorima poput PuTTY-ja također rade, ali u ovom tečaju koristimossh. - SSH poslužitelj na VPS-u: program
sshd(iz paketa OpenSSH). Standardno sluša na priključku 22.
Prijava
Prijavljujete se korisničkim imenom i adresom poslužitelja:
PS C:\Users\anna> ssh root@192.0.2.10Ili imenom, ako ste ga postavili u DNS-u (lekcija 7.1):
anna@laptop:~$ ssh root@web1.example.comPrvi put vidjet ćete nešto poput ovoga:
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])?Ovo je najvažniji trenutak ove lekcije. Nemojte naslijepo upisati yes.
Host key i otisak
Svaki SSH poslužitelj ima jedan ili više host keyeva: parova ključeva kojima poslužitelj dokazuje tko je. Javni dijelovi nalaze se na poslužitelju u /etc/ssh/, na primjer /etc/ssh/ssh_host_ed25519_key.pub. Pri svakoj vezi poslužitelj pokazuje da posjeduje tajni dio.
Otisak (fingerprint) je kratki sažetak (hash) takvog javnog ključa. OpenSSH standardno prikazuje oblik SHA256: SHA256: nakon čega slijede 43 znaka.
Pitanje "Are you sure you want to continue connecting?" znači: Vaše računalo još ne poznaje ovaj poslužitelj. Tko jamči da razgovarate sa svojim VPS-om, a ne s nekim tko presreće promet? Nitko, osim ako sami ne usporedite otisak s pouzdanim izvorom.
Taj izvor je konzola Vašeg pružatelja usluge (lekcija 1.2). Tamo s poslužiteljem ne komunicirate preko mreže. Prijavite se u konzolu i zatražite otisak:
root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)Ako se to točno podudara s onim što prikazuje klijent, upišite yes. Umjesto yes možete zalijepiti i sam otisak; tada ga ssh usporedi umjesto Vas. Ako se razlikuje, stanite i istražite zašto (pogrešna IP adresa, ponovno instaliran poslužitelj ili nešto ozbiljnije).
Pazite na vrstu: klijent navodi vrstu (ED25519, ECDSA ili RSA). Uspoređujte otisak iste vrste. Mnoge slike sustava (images) pri prvom pokretanju ispisuju otiske i u konzolu (cloud-init), između redaka poput BEGIN SSH HOST KEY FINGERPRINTS.
known_hosts i trust on first use
Kad upišete yes, vidjet ćete:
Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.Klijent sprema ključ u ~/.ssh/known_hosts (na Windowsu C:\Users\<naam>\.ssh\known_hosts). Od sada ga pri svakoj vezi automatski uspoređuje. Taj se model zove trust on first use (TOFU, povjerenje pri prvoj upotrebi): prvi put morate sami provjeriti, a nakon toga nadzor preuzima klijent.
Zato je ta prva provjera tako važna: ako povjerujete pogrešnom ključu, klijent Vas poslije nikad više neće upozoriti.
Ako i sami radite na računalu s Debianom ili Ubuntuom, imena u known_hosts standardno su hashirana (HashKnownHosts yes u /etc/ssh/ssh_config), pa tamo nećete vidjeti čitljive IP adrese. Na Windowsu i macOS-u ona su zapisana čitljivo. Pretraživanje svugdje radi ovako:
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"
Ponekad ćete vidjeti ovo upozorenje:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.Poslužitelj pokazuje drugi ključ od onoga koji Vaš klijent poznaje. ssh tada odbija uspostaviti vezu. Postoje dvije vrste uzroka:
| Normalno | Sumnjivo |
|---|---|
| Ponovno ste instalirali VPS (novi host keyevi) | Ništa niste mijenjali, a ključ je ipak drugačiji |
| IP adresa dodijeljena je drugom poslužitelju | Spojeni ste na nepoznatu Wi-Fi mrežu |
| Namjerno ste zamijenili host keyeve | Otisak u konzoli razlikuje se od onoga što klijent sada vidi |
Ako postoji normalno objašnjenje, ponovno provjerite otisak u konzoli i tek nakon toga uklonite stari redak:
anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.Pri sljedećoj vezi ponovno ćete dobiti pitanje kao prvi put i ponovno provjeriti. Nikad ne postavljajte StrictHostKeyChecking no u svojim postavkama kako biste se riješili upozorenja: time isključujete upravo onu zaštitu o kojoj je riječ.
Banner s verzijom
Prije nego što se išta šifrira, klijent i poslužitelj jedan drugome pošalju redak teksta: banner s verzijom. On je vidljiv svima na internetu. Vidjet ćete ga pomoću 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.5Poslužitelj ovdje navodi koji protokol (2.0) i koji softver koristi. Debian i Ubuntu iza toga dodaju verziju paketa. To nije tajna koju morate skrivati: napadači ionako isprobavaju sve, a štitite se ažuriranjima (modul 4), ne drugačijim bannerom. Korisno je ipak to što po banneru izvana možete vidjeti radi li Vaš poslužitelj zaista na ažuriranoj verziji.
Na AlmaLinuxu i Rocky Linuxu
Prijava i otisci rade jednako. Usluga se zove sshd umjesto ssh (systemctl status sshd). Banner ne sadrži naziv distribucije, samo verziju OpenSSH-a.
Sažetak
- SSH je šifrirana veza prema Vašem poslužitelju;
sshje klijent, asshdposlužitelj na priključku 22. - Pri prvoj vezi klijent prikazuje otisak host keya. Usporedite ga s izlazom naredbe
ssh-keygen -lfu konzoli prije nego što upišeteyes. - Klijent sprema ključ u
~/.ssh/known_hostsi ubuduće sam upozorava (trust on first use). - "REMOTE HOST IDENTIFICATION HAS CHANGED" normalno je nakon ponovne instalacije; inače je sumnjivo. Stari redak uklonite tek nakon provjere, pomoću
ssh-keygen -R. - Banner s verzijom je javan; zaštita dolazi od ažuriranja, ne od skrivanja.
Kviz
Zadatak
Zadatak Z1.3: SSH banner i otisak (fingerprint) Vašeg poslužitelja. Upišite adresu svojeg poslužitelja, verziju softvera iz bannera (poput OpenSSH_9.6p1) i ED25519 otisak koji ste u konzoli dobili naredbom ssh-keygen -lf. Program uspostavlja jednu vezu na Vaš SSH priključak, čita banner i host key te ih uspoređuje. Ne prijavljuje se.
Dodatno štivo
- Prijava na VPS putem SSH-a (i izrada SSH ključa)
- Nemate više pristup VPS-u: što sada?
- ssh-keygen(1), opcije -l, -F i -R: https://manpages.debian.org/trixie/openssh-client/ssh-keygen.1.en.html
- ssh_config(5), StrictHostKeyChecking, FingerprintHash i HashKnownHosts: https://manpages.debian.org/trixie/openssh-client/ssh_config.5.en.html
- RFC 4253, odjeljak 4.2 (banner s verzijom): https://www.rfc-editor.org/rfc/rfc4253.html
