Modul 1 · 1.3
Det første SSH-login
Modul 1: Din første server · Læsetid: 10 minutter
Læringsmål: Efter denne lektion kan du logge ind på din server med SSH for første gang, kontrollere serverens fingeraftryk, før du stoler på den, og du ved, hvad du gør, når du får advarslen om, at serverens identitet er ændret.
Centrale begreber: SSH, klient og server, port 22, versionsbanner, host key, fingeraftryk (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell og Terminal
Hvad SSH er
SSH (Secure Shell) er den krypterede forbindelse, som du bruger til at administrere en server på afstand. Du skriver på din egen computer, og kommandoerne udføres på serveren. Alt, hvad der sendes over forbindelsen, også din adgangskode, er krypteret.
Der er to sider:
- SSH-klienten på din egen computer: programmet
ssh. På macOS og Linux følger den med som standard. På Windows 10 (fra version 1809) og Windows 11 er OpenSSH-klienten en del af Windows; du bruger den i PowerShell eller Windows Terminal. Mangler den, tilføjer du den via Indstillinger, Valgfrie funktioner, "OpenSSH-klient". Programmer med vinduer som PuTTY virker også, men i dette kursus bruger vissh. - SSH-serveren på din VPS: programmet
sshd(fra OpenSSH). Den lytter som standard på port 22.
Log ind
Du logger ind med et brugernavn og serverens adresse:
PS C:\Users\anna> ssh root@192.0.2.10Eller med et navn, hvis du har oprettet det i DNS (lektion 7.1):
anna@laptop:~$ ssh root@web1.example.comFørste gang ser du noget i stil med dette:
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])?Det er det vigtigste øjeblik i denne lektion. Skriv ikke bare yes i blinde.
Host key og fingeraftryk
Hver SSH-server har en eller flere host keys: nøglepar, som serveren bruger til at bevise, hvem den er. De offentlige dele ligger på serveren i /etc/ssh/, for eksempel /etc/ssh/ssh_host_ed25519_key.pub. Ved hver forbindelse viser serveren, at den har den hemmelige del.
Et fingeraftryk er et kort sammendrag (en hash) af sådan en offentlig nøgle. OpenSSH viser som standard SHA256-formen: SHA256: efterfulgt af 43 tegn.
Spørgsmålet "Are you sure you want to continue connecting?" betyder: din computer kender ikke denne server endnu. Hvem garanterer, at du taler med din VPS og ikke med nogen, der opfanger trafikken? Ingen, medmindre du sammenligner fingeraftrykket med en pålidelig kilde.
Den kilde er konsollen hos din udbyder (lektion 1.2). Der taler du ikke med serveren via netværket. Log ind i konsollen, og hent fingeraftrykket:
root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)Stemmer det præcis overens med det, klienten viser, skriver du yes. Du kan også indsætte selve fingeraftrykket i stedet for yes; så sammenligner ssh det for dig. Afviger det, stopper du og finder ud af hvorfor (forkert IP-adresse, server geninstalleret eller noget mere alvorligt).
Vær opmærksom på typen: klienten nævner typen (ED25519, ECDSA eller RSA). Sammenlign fingeraftrykket af samme type. Mange images viser også fingeraftrykkene i konsollen ved første opstart (cloud-init), mellem linjer som BEGIN SSH HOST KEY FINGERPRINTS.
known_hosts og trust on first use
Skriver du yes, ser du:
Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.Klienten gemmer nøglen i ~/.ssh/known_hosts (på Windows C:\Users\<naam>\.ssh\known_hosts). Fra nu af sammenligner den automatisk ved hver forbindelse. Denne model hedder trust on first use (TOFU): første gang skal du selv kontrollere, derefter holder klienten øje.
Derfor er den første kontrol så vigtig: stoler du på en forkert nøgle, advarer klienten aldrig igen.
Arbejder du selv på en computer med Debian eller Ubuntu, er navnene i known_hosts som standard hashet (HashKnownHosts yes i /etc/ssh/ssh_config), så du ser ingen læsbare IP-adresser der. På Windows og macOS står de læsbart. Søgning virker overalt med:
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"
Nogle gange ser du denne advarsel:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.Serveren viser en anden nøgle end den, din klient kender. ssh nægter så at oprette forbindelse. Der er to slags årsager:
| Normalt | Mistænkeligt |
|---|---|
| Du har geninstalleret din VPS (nye host keys) | Du har ikke ændret noget, og alligevel er nøglen anderledes |
| IP-adressen er givet til en anden server | Du sidder på et fremmed wifi-netværk |
| Du har bevidst udskiftet host keys | Fingeraftrykket i konsollen afviger fra det, klienten ser nu |
Er der en normal forklaring, så kontrollér fingeraftrykket i konsollen igen, og fjern først derefter den gamle linje:
anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.Ved næste forbindelse får du igen spørgsmålet fra første gang, og du kontrollerer igen. Sæt aldrig StrictHostKeyChecking no i dine indstillinger for at slippe af med advarslen: så slår du netop den beskyttelse fra, det hele handler om.
Versionsbanneret
Før noget bliver krypteret, sender klient og server hinanden en linje tekst: versionsbanneret. Det er synligt for alle på internettet. Du ser det med 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.5Serveren fortæller her, hvilken protokol (2.0) og hvilken software den bruger. Debian og Ubuntu tilføjer pakkeversionen. Det er ikke en hemmelighed, du skal skjule: angribere prøver alligevel alt, og du beskytter dig med opdateringer (modul 4), ikke med et andet banner. Til gengæld er det praktisk: ud fra banneret kan du udefra se, om din server faktisk kører den opdaterede version.
På AlmaLinux og Rocky Linux
Login og fingeraftryk fungerer på samme måde. Tjenesten hedder sshd i stedet for ssh (systemctl status sshd). Banneret indeholder ikke noget distributionsnavn, kun OpenSSH-versionen.
Opsummering
- SSH er den krypterede forbindelse til din server;
ssher klienten,sshdserveren på port 22. - Ved første forbindelse viser klienten fingeraftrykket af serverens host key. Sammenlign det med outputtet fra
ssh-keygen -lfi konsollen, før du skriveryes. - Klienten gemmer nøglen i
~/.ssh/known_hostsog advarer fremover selv (trust on first use). - "REMOTE HOST IDENTIFICATION HAS CHANGED" er normalt efter en geninstallation; ellers er det mistænkeligt. Fjern kun en gammel linje efter kontrol, med
ssh-keygen -R. - Versionsbanneret er offentligt; beskyttelse kommer fra opdateringer, ikke fra at skjule det.
Quiz
Opgave
Opgave Z1.3: SSH-banner og fingeraftryk for din server. Udfyld din servers adresse, softwareversionen fra banneret (som OpenSSH_9.6p1) og det ED25519-fingeraftryk, som du hentede i konsollen med ssh-keygen -lf. Programmet opretter én forbindelse til din SSH-port, læser banneret og host key og sammenligner. Det logger ikke ind.
Læs mere
- Log ind på din VPS med SSH (og opret en SSH-nøgle)
- Ingen adgang til din VPS længere: hvad nu?
- ssh-keygen(1), valgmulighederne -l, -F og -R: https://manpages.debian.org/trixie/openssh-client/ssh-keygen.1.en.html
- ssh_config(5), StrictHostKeyChecking, FingerprintHash og HashKnownHosts: https://manpages.debian.org/trixie/openssh-client/ssh_config.5.en.html
- RFC 4253, afsnit 4.2 (versionsbanneret): https://www.rfc-editor.org/rfc/rfc4253.html
- VPS: fra første login til sikker server 2.1: Første login med SSH
