Hop til indhold
Netværk og internet

SSH (Secure Shell)

Secure Shell

SSH, eller Secure Shell, er en krypteret netværksprotokol, der bruges til at skabe sikker fjernadgang til og styring af servere og andre computere over et netværk, herunder et usikret netværk som internettet. Protokollen etablerer en krypteret forbindelse mellem en klient og en server, så kommandoer, adgangskoder og filer ikke kan aflæses eller ændres af udenforstående undervejs. SSH bruges primært af systemadministratorer og udviklere, der har brug for at logge ind på og administrere en computer uden at være fysisk til stede ved den.

Et typisk eksempel er en udvikler, der fra sin bærbare computer skal genstarte en webserver placeret i et fjernt datacenter: i stedet for at rejse derhen åbner udvikleren en terminal, opretter en SSH-forbindelse til serverens IP-adresse, logger ind med et brugernavn og en nøgle, og kan derefter køre præcis de samme kommandoer, som hvis vedkommende sad foran maskinen. Denne form for adgang er blevet en grundsten i drift af servere, cloud-infrastruktur og automatiserede systemer, fordi den giver kontrol over en maskine uden at kompromittere sikkerheden på vejen derhen.

Hvad bruges SSH til i praksis

SSH bruges til flere beslægtede opgaver, som alle handler om at styre eller udveksle data med en computer over et netværk. Det mest grundlæggende formål er fjernlogin, hvor en bruger får en kommandolinje-adgang til en server, som var vedkommende logget ind lokalt. Herudover bruges protokollen til sikker filoverførsel via de tilhørende protokoller SFTP og SCP, til automatiserede opgaver som backup-scripts og konfigurationsstyring, og til at tunnelere anden trafik gennem den krypterede forbindelse. Udviklere der arbejder med AI-drevne kodeværktøjer i terminalen, som Claude Code, opretter ofte selv en separat SSH-forbindelse til den server, hvor koden efterfølgende skal køre eller testes.

Protokollen blev skabt i 1995 som en erstatning for ældre værktøjer som Telnet og rlogin, der sendte al data, inklusive adgangskoder, i klartekst over netværket. Enhver, der kunne aflytte netværkstrafikken, kunne dermed læse både login-oplysninger og indholdet af det, der blev overført. SSH løste dette ved at kryptere hele forbindelsen fra starten af sessionen.

Sådan fungerer en SSH-forbindelse

SSH følger en klient-server-model og kører typisk over TCP på port 22, medmindre andet er konfigureret. Selve forbindelsen opbygges i tre trin. Først forhandler klient og server, hvilken version af protokollen og hvilke krypteringsalgoritmer de begge understøtter, og de udveksler nøgler gennem en nøgleudvekslingsalgoritme, ofte baseret på Diffie-Hellman, uden at den hemmelige nøgle nogensinde sendes åbent over netværket. Klienten kontrollerer samtidig serverens værtsnøgle for at sikre, at forbindelsen går til den rigtige maskine og ikke en efterligning. Dernæst godkendes brugeren, enten med en adgangskode eller, mere sikkert, med et sæt SSH-nøgler. Når godkendelsen er gennemført, åbnes en krypteret kanal, hvor al efterfølgende trafik beskyttes med en symmetrisk krypteringsalgoritme og kontrolleres for manipulation undervejs.

Man kan sammenligne princippet med, hvordan andre protokoller definerer faste regler for udveksling af data mellem systemer. Ligesom Model Context Protocol (MCP) fastlægger et struktureret regelsæt for, hvordan AI-modeller kan hente og udveksle data med eksterne systemer, fastlægger SSH et regelsæt for, hvordan to computere sikkert kan identificere hinanden og udveksle krypteret data.

SSH-nøgler: symmetrisk kryptering, asymmetrisk kryptering og hashing

En SSH-forbindelse bygger på tre kryptografiske teknikker, der hver løser sin del af sikkerhedsopgaven. Symmetrisk kryptering bruger én delt nøgle til både at kryptere og dekryptere data under selve sessionen, og nøglen udregnes af klient og server i fællesskab via en nøgleudvekslingsalgoritme, så den aldrig sendes direkte. Asymmetrisk kryptering bruges typisk til selve godkendelsen og består af et nøglepar: en privat nøgle, som brugeren aldrig deler, og en offentlig nøgle, som lægges på serveren. Kan klienten bevise, at den er i besiddelse af den private nøgle, der matcher den offentlige, betragtes brugeren som godkendt, uden at adgangskoder overhovedet indgår. Endelig bruges hashing til at sikre dataintegritet: en hash-algoritme genererer en kort kode ud fra indholdet af en pakke eller fil, så modtageren kan opdage, hvis blot én bit er blevet ændret undervejs.

Fordi nøglebaseret godkendelse gør det muligt at logge ind uden manuelt at indtaste en adgangskode, bruges den i vid udstrækning til automatiserede opgaver som CI/CD-pipelines og planlagte scripts. Til gengæld peger flere sikkerhedskilder på, at SSH-nøgler i modsætning til certifikater typisk ikke udløber automatisk, hvilket kan føre til, at glemte eller “forældreløse” nøgler ophober sig i en organisation og udgør en risiko, hvis de ikke ryddes op og roteres løbende.

Tunnelering og port forwarding med SSH

Ud over fjernlogin kan SSH bruges til at tunnelere anden netværkstrafik gennem den krypterede forbindelse, hvilket i praksis fungerer som en let VPN-løsning for enkelte tjenester. Ved lokal port forwarding kan en bruger få adgang til en tjeneste, der kun kører internt på serveren, som om den lå på egen maskine, mens fjernvideresendelse gør det muligt at dele en lokal tjeneste ud til en ekstern server. Dynamisk videresendelse opretter i stedet en generel SOCKS-proxy, som kan dirigere flere forskellige forbindelser gennem samme SSH-tunnel. En SSH-forbindelse kan i princippet oprettes over enhver netværksforbindelse, der tillader almindelig TCP-trafik, herunder satellitinternet som Starlink, så længe den relevante port er åben mellem klient og server.

Sikkerhed og god praksis ved brug af SSH

Selvom SSH i sig selv er designet til at være sikkert, afhænger den reelle beskyttelse i høj grad af, hvordan protokollen konfigureres. Almindelige anbefalinger går på at deaktivere direkte login som root-bruger, slå adgangskodebaseret login fra til fordel for nøglebaseret godkendelse, begrænse hvilke brugere og IP-adresser der overhovedet kan forsøge at logge ind, og holde SSH-serveren opdateret med sikkerhedsrettelser. Værktøjer som fail2ban kan desuden bruges til automatisk at blokere IP-adresser, der gentagne gange fejler login, hvilket reducerer effekten af automatiserede angreb mod åbne servere.

På det mere fremadrettede plan peger dele af sikkerhedsbranchen på, at den asymmetriske kryptering, som SSH’s nøgleudveksling bygger på, i teorien kan blive sårbar over for tilstrækkeligt kraftfulde kvantecomputere. Nyere versioner af den udbredte implementering OpenSSH har derfor allerede indført kvanteresistente metoder til selve nøgleudvekslingen som et forebyggende skridt, mens den symmetriske kryptering, der beskytter selve sessionens data, fortsat anses for robust.

Eksempel
En udvikler bruger SSH fra sin bærbare computer til at logge ind på en webserver i et andet land og genstarte en tjeneste, uden at nogen på netværket kan aflæse kommandoerne undervejs.
Ofte stillede spørgsmål
Hvad er forskellen på SSH og Telnet?
SSH krypterer al trafik mellem klient og server, mens Telnet sender brugernavn, adgangskode og kommandoer i klartekst. SSH blev skabt i 1995 netop som en sikker erstatning for Telnet og lignende ældre protokoller.
Hvilken port bruger SSH som standard?
SSH kører som standard over TCP port 22, men porten kan ændres i serverens konfiguration for at reducere automatiseret scanning af standardporten.
Hvad er forskellen på en SSH-nøgle og en adgangskode?
En adgangskode er en delt hemmelighed, der skal indtastes ved hvert login, mens en SSH-nøgle består af et privat og et offentligt nøglepar, hvor kun den offentlige del ligger på serveren, og den private del aldrig forlader brugerens maskine.
Kan SSH bruges til at overføre filer, eller kun til fjernlogin?
SSH bruges også til filoverførsel gennem de tilhørende protokoller SFTP og SCP, som begge sender data gennem den samme krypterede SSH-forbindelse som fjernlogin.
Er SSH det samme som en VPN?
Nej, men de ligner hinanden. En VPN krypterer typisk al trafik fra en enhed til et netværk, mens SSH primært giver adgang til én bestemt server, og tunnelering med SSH kun videresender de forbindelser, brugeren aktivt sætter op.
Arbejder du selv med kodeprojekter i terminalen? Se hvordan Claude Code kan hjælpe dig med at skrive og styre kode direkte fra kommandolinjen.
Claude Code →