Hoppa till innehållet

Cookieinställningar

Välj vilka typer av cookies du tillåter. Du kan alltid ändra ditt val via Cookieinställningar längst ned på varje sida. Integritetspolicy

Nödvändiga

Alltid på

Behövs för att logga in, spara din varukorg och komma ihåg dina val. De är alltid på.

Vilka cookies?
  • weboke_sessie, weboke_klant, weboke_remember: din session och att du förblir inloggad
  • weboke_basket: din varukorg
  • wkBtwIncl: visa priser med eller utan moms
  • wok_cookies: ditt cookieval, 12 månader

Mäter vilken annons som leder till ett besök eller en beställning, så att vi inte betalar för annonser som inte ger något.

Vilka cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), upp till 90 dagar
  • OpenAI Ads, annonser i ChatGPT
  • wok_aff: via vilken partner du kom till oss (affiliateprogram), 60 dagar

4,6

Land och språk

Varje land har en egen webbplats med landets priser och moms.

Visa

Den första SSH-inloggningen

Modul 1: Din första server · Lästid: 10 minuter

Lärandemål: Efter den här lektionen kan du logga in på din server med SSH för första gången, kontrollera serverns fingeravtryck innan du litar på den och veta vad du gör när du får en varning om att serverns identitet har ändrats.

Nyckelbegrepp: SSH, klient och server, port 22, versionsbanner, host key, fingeravtryck (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell och Terminal

Vad SSH är

SSH (Secure Shell) är den krypterade anslutning som du använder för att hantera en server på distans. Du skriver på din egen dator och kommandona körs på servern. Allt som skickas över anslutningen, även ditt lösenord, är krypterat.

Det finns två sidor:

  • SSH-klienten på din egen dator: programmet ssh. På macOS och Linux finns det med från början. På Windows 10 (från version 1809) och Windows 11 är OpenSSH-klienten en del av Windows, och du använder den i PowerShell eller Windows Terminal. Saknas den lägger du till den via Inställningar, Valfria funktioner, "OpenSSH-klient". Program med fönster, till exempel PuTTY, fungerar också, men i den här kursen använder vi ssh.
  • SSH-servern på din VPS: programmet sshd (från OpenSSH). Som standard lyssnar det på port 22.

Logga in

Du loggar in med ett användarnamn och serverns adress:

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

Eller med ett namn, om du har lagt in det i DNS (lektion 7.1):

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

Första gången ser du ungefär det här:

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 här är det viktigaste ögonblicket i lektionen. Skriv inte yes utan att tänka efter.

Host key och fingeravtryck

Varje SSH-server har en eller flera host keys: nyckelpar som servern använder för att bevisa vem den är. De publika delarna finns på servern i /etc/ssh/, till exempel /etc/ssh/ssh_host_ed25519_key.pub. Vid varje anslutning visar servern att den har den hemliga delen.

Ett fingeravtryck är en kort sammanfattning (en hash) av en sådan publik nyckel. OpenSSH visar som standard SHA256-formen: SHA256: följt av 43 tecken.

Frågan "Are you sure you want to continue connecting?" betyder att din dator inte känner till den här servern än. Vem garanterar att du pratar med din VPS och inte med någon som avlyssnar trafiken? Ingen, om du inte jämför fingeravtrycket med en pålitlig källa.

Den källan är konsolen hos din leverantör (lektion 1.2). Där pratar du inte med servern via nätverket. Logga in i konsolen och ta fram fingeravtrycket:

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

Stämmer det exakt med det som klienten visar skriver du yes. Du kan också klistra in själva fingeravtrycket i stället för yes, så jämför ssh det åt dig. Skiljer det sig åt stannar du och tar reda på varför (fel IP-adress, servern har installerats om eller något allvarligare).

Tänk på typen: klienten anger typen (ED25519, ECDSA eller RSA). Jämför fingeravtryck av samma typ. Många images skriver också ut fingeravtrycken i konsolen vid första starten (cloud-init), mellan rader som BEGIN SSH HOST KEY FINGERPRINTS.

known_hosts och trust on first use

När du skriver yes ser du:

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

Klienten sparar nyckeln i ~/.ssh/known_hosts (på Windows C:\Users\<naam>\.ssh\known_hosts). Från och med nu jämför den automatiskt vid varje anslutning. Den här modellen kallas trust on first use (TOFU): första gången måste du kontrollera själv, sedan vakar klienten över det.

Därför är den första kontrollen så viktig: litar du på fel nyckel kommer klienten aldrig att varna dig efteråt.

Arbetar du själv på en dator med Debian eller Ubuntu är namnen i known_hosts hashade som standard (HashKnownHosts yes i /etc/ssh/ssh_config), så där ser du inga läsbara IP-adresser. På Windows och macOS står de i klartext. Sökning fungerar överallt 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"

Ibland får du den här varningen:

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

Servern visar en annan nyckel än den som din klient känner till. ssh vägrar då att ansluta. Det finns två sorters orsaker:

NormaltMisstänkt
Du har installerat om din VPS (nya host keys)Du har inte ändrat något och ändå är nyckeln en annan
IP-adressen har getts till en annan serverDu sitter på ett okänt wifinätverk
Du har medvetet bytt ut host keysFingeravtrycket i konsolen skiljer sig från det som klienten ser nu

Finns det en normal förklaring kontrollerar du fingeravtrycket i konsolen igen och tar först därefter bort den gamla raden:

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

Vid nästa anslutning får du samma fråga som första gången, och du kontrollerar igen. Sätt aldrig StrictHostKeyChecking no i dina inställningar för att bli av med varningen: då stänger du av precis det skydd som det handlar om.

Versionsbannern

Innan något krypteras skickar klienten och servern en textrad till varandra: versionsbannern. Den syns för alla på internet. Du ser den 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

Här talar servern om vilket protokoll (2.0) och vilken programvara den använder. Debian och Ubuntu lägger till paketversionen efter. Det är ingen hemlighet som du behöver dölja: angripare provar ändå allt, och du skyddar dig med uppdateringar (modul 4), inte med en annan banner. Det är däremot praktiskt: på bannern ser du utifrån om din server verkligen kör den uppdaterade versionen.

På AlmaLinux och Rocky Linux

Inloggning och fingeravtryck fungerar på samma sätt. Tjänsten heter sshd i stället för ssh (systemctl status sshd). Bannern innehåller inget distributionsnamn, bara OpenSSH-versionen.

Sammanfattning

  • SSH är den krypterade anslutningen till din server. ssh är klienten och sshd servern på port 22.
  • Vid den första anslutningen visar klienten fingeravtrycket för serverns host key. Jämför det med utdata från ssh-keygen -lf i konsolen innan du skriver yes.
  • Klienten sparar nyckeln i ~/.ssh/known_hosts och varnar dig själv från och med nu (trust on first use).
  • "REMOTE HOST IDENTIFICATION HAS CHANGED" är normalt efter en ominstallation, annars är det misstänkt. Ta bara bort en gammal rad efter kontroll, med ssh-keygen -R.
  • Versionsbannern är offentlig. Skyddet kommer från uppdateringar, inte från att dölja den.

Quiz

1. Vad jämför du fingeravtrycket som ssh visar vid den första anslutningen med?



2. Vad gör ~/.ssh/known_hosts?



3. Du har installerat om din VPS och får "REMOTE HOST IDENTIFICATION HAS CHANGED". Vilken är rätt ordning?



4. Varför är den första kontrollen så viktig vid trust on first use?



5. Vad visar en SSH-servers versionsbanner?



Uppgift

Uppgift Z1.3: SSH-banner och fingeravtryck för din server. Fyll i din servers adress, programversionen från bannern (till exempel OpenSSH_9.6p1) och det ED25519-fingeravtryck som du tog fram i konsolen med ssh-keygen -lf. Programmet gör en anslutning till din SSH-port, läser bannern och host key och jämför. Det loggar inte in.

Uppgift Z1.3: SSH-banner och fingeravtryck för din server

Vi loggar inte in och provar inget lösenord eller någon nyckel. Först visar du att servern är din: klicka på "Visa min kod" och lägg en fil /.well-known/weboke-cursus-<code>.txt med bara den koden på webbservern för ditt värdnamn. Vi hämtar den direkt från varje IP-adress vi kontrollerar (IPv4 och IPv6 separat); en TXT-post räknas inte här. Kontrollen kommer från heavy.webawere.nl (185.158.167.16 och 2a07:ae80:100:0:185:158:167:16), inte från vår webbserver. Endast för inloggade kursdeltagare; högst 6 kontroller per timme och server. I den här uppgiften öppnar vi en anslutning och läser bara serverns banner och nyckel; inget inloggningsförsök hamnar i din logg.





Det du fyller i och det vi hittar sparar vi inte. Din webbläsare kommer ihåg dina svar och om du klarade uppgiften. Är du inloggad sparar vi bara att du klarade uppgiften (nästan) i Mina kurser; där kan du också ta bort det.

Läs mer

Ett ögonblick…

Ställ in dina domäner

Ställ in namnservrar, koppling till ditt webbhotell och vem som blir innehavare för varje domän.

Hämtar dina domäner…