Gå direkte til indholdet

Cookieindstillinger

Vælg for hver type, hvilke cookies du tillader. Du kan altid ændre dit valg via Cookieindstillinger nederst på hver side. Privatlivspolitik

Nødvendige

Altid slået til

Nødvendige for at logge ind, gemme din kurv og huske dine valg. De er altid slået til.

Hvilke cookies?
  • weboke_sessie, weboke_klant, weboke_remember: din session og at forblive logget ind
  • weboke_basket: din kurv
  • wkBtwIncl: vise priser med eller uden moms
  • wok_cookies: dit cookievalg, 12 måneder

Måler, hvilken annonce der fører til et besøg eller en bestilling, så vi ikke betaler for annoncer, der ikke virker.

Hvilke cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), op til 90 dage
  • OpenAI Ads, annoncer i ChatGPT
  • wok_aff: hvilken partner der henviste dig til os (affiliateprogram), 60 dage

4,6

Land og sprog

Hvert land har sin egen side med landets priser og moms.

Se

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 vi ssh.
  • 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.10

Eller med et navn, hvis du har oprettet det i DNS (lektion 7.1):

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

Fø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:

NormaltMistæ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 serverDu sidder på et fremmed wifi-netværk
Du har bevidst udskiftet host keysFingeraftrykket 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.5

Serveren 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; ssh er klienten, sshd serveren på port 22.
  • Ved første forbindelse viser klienten fingeraftrykket af serverens host key. Sammenlign det med outputtet fra ssh-keygen -lf i konsollen, før du skriver yes.
  • Klienten gemmer nøglen i ~/.ssh/known_hosts og 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

1. Hvad sammenligner du det fingeraftryk med, som ssh viser ved første forbindelse?



2. Hvad gør ~/.ssh/known_hosts?



3. Du har geninstalleret din VPS og får "REMOTE HOST IDENTIFICATION HAS CHANGED". Hvad er den rigtige rækkefølge?



4. Hvorfor er den første kontrol så vigtig ved trust on first use?



5. Hvad viser versionsbanneret fra en SSH-server?



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.

Opgave Z1.3: SSH-banner og fingeraftryk for din server

Vi logger ikke ind og prøver hverken adgangskode eller nøgle. Først viser du, at serveren er din: klik på "Vis min kode", og læg en fil /.well-known/weboke-cursus-<code>.txt med kun den kode på webserveren for dit værtsnavn. Vi henter den direkte fra hver IP-adresse, vi tjekker (IPv4 og IPv6 hver for sig); en TXT-record tæller ikke her. Kontrollen kommer fra heavy.webawere.nl (185.158.167.16 og 2a07:ae80:100:0:185:158:167:16), ikke fra vores webserver. Kun for tilmeldte kursister; højst 6 kontroller pr. time pr. server. Ved denne opgave opretter vi én forbindelse og læser kun serverens banner og nøgle; der kommer intet loginforsøg i din log.





Det, du udfylder, og hvad vi finder, gemmer vi ikke. Din browser husker dine svar, og om du har bestået opgaven. Er du logget ind, gemmer vi kun, at du (næsten) bestod opgaven, i Mine kurser; der kan du også slette det.

Læs mere

Et øjeblik…

Opsæt dine domæner

Angiv for hvert domæne navneserverne, tilknytningen til din hosting, og hvem der bliver ejer.

Indlæser dine domæner…