På denne siden

Denne guiden går dypere i SSH-delen av Fjernaksess og filoverføring. Der lærte du hvilke kommandoer du skal taste; her lærer du hva som egentlig skjer — og ender opp med hverdags-SSH-oppsettet de fleste fagfolk bruker.

Du trenger ssh-kommandoen, og noe å koble deg til. På Ubuntu og Fedora er ssh der fra før. På Arch installerer du den med sudo pacman -S openssh. «Noe» kan være en leid server, en Raspberry Pi i kjelleren, hva som helst med SSH slått på. Alt i denne guiden er verifisert mot OpenSSH på Ubuntu 26.04 og Fedora 44.

Hva SSH faktisk gjør

Når du taster ssh [email protected], bygger datamaskinen din og serveren en kryptert kanal mellom seg. Alt du taster — inkludert passordet ditt — reiser over nettverket som uleselig støy for enhver som befinner seg imellom. Den risikoen er ikke teoretisk: på et åpent Wi-Fi-nettverk kan ukryptert trafikk leses av andre på samme nett. SSH finnes for at dette ikke skal bety noe.

De gamle verktøyene telnet og ftp sendte alt som lesbar klartekst. De finnes fortsatt, men du bør regne dem som pensjonert: alt de gjorde, gjør SSH trygt. Filoverføringskommandoene i denne guiden — scp, rsync, sftp — bruker alle SSH som sikker transport.

Første tilkobling — hvem sin server er dette?

Aller første gang du kobler til en ny server, stopper SSH deg:

$ ssh [email protected]
The authenticity of host 'server.example.com (203.0.113.10)' can't be established.
ED25519 key fingerprint is: SHA256:e3OHEmcFeugtHcA5MbFxf+gMnmqAwm9ekKvOe2sYokI
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Hver server har en permanent identitet som kalles vertsnøkkelen; fingeravtrykket er en kort oppsummering av den.

På enkelt norsk spør SSH: «Jeg har aldri møtt denne serveren før. Her er fingeravtrykket dens. Stoler du på den?»

Dette er en ekte beslutning, ikke en lisensdialog, og det ærlige svaret avhenger av hvem som eier serveren:

  • Du har leid den (en VPS fra en leverandør): leverandørens kontrollpanel viser som regel serverens fingeravtrykk. Å sammenligne det med det SSH viser deg, er god sikkerhetsskikk.
  • Er det din egen Raspberry Pi, eller en gammel bærbar i klesskapet? Da satt du den opp selv, sannsynligvis denne uka. Hvis ingenting annet har rørt den siden, er yes en velbegrunnet tillit.
  • Drifter noen andre den — jobb, skole, en venn — spør dem hva fingeravtrykket skal være. Eller godta det, og stol på advarselen nedenfor hvis nøkkelen noen gang endrer seg.

Etter at du svarer yes, husker SSH nøkkelen i ~/.ssh/known_hosts og spør aldri igjen for den serveren:

Warning: Permanently added 'server.example.com' (ED25519) to the list of known hosts.

Så logger du inn med passordet ditt. Men passord har to svakheter: du må taste dem hver gang, og alt som kan gjette dem, kommer inn. Nøkler fikser begge deler, og resten av denne guiden handler om dem.

Advarselen du ikke må trykke deg forbi

En dag kobler du til en server du har brukt mange ganger, og ser dette i stedet:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:/b2fy6vIjRa/Wuj2adXHBQVTPRdV5yeWH6TGKMAyQM8.
Please contact your system administrator.
Add correct host key in /home/you/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/you/.ssh/known_hosts:3
  remove with:
  ssh-keygen -f '/home/you/.ssh/known_hosts' -R 'server.example.com'
Host key for server.example.com has changed and you have requested strict checking.
Host key verification failed.

Serverens nøkkel stemmer ikke lenger med det known_hosts husker. Mest sannsynlig ble serveren installert på nytt — en fersk installasjon lager ferske nøkler, så dette er vanlig etter en gjenoppbygging eller etter at et SD-kort på en Raspberry Pi er blitt skrevet på nytt. Eller navnet peker nå på en annen maskin. Den usannsynlige, men alvorlige forklaringen er at noen utgir seg for å være serveren. La deg ikke forvirre av nøkkeltypene: en server holder flere vertsnøkler samtidig, én per type som ED25519 og ECDSA, så ulike linjer i samme advarsel kan nevne ulike typer.

Hva du gjør: vet du at serveren er endret, er alt fint. Vet du ikke om noe er endret — stopp, og sjekk med den som drifter serveren, før du kobler til.

Når du vet at det er trygt, forteller feilmeldingen nøyaktig hva du skal gjøre. Den navngir filen, linjen og kommandoen:

Offending ECDSA key in /home/you/.ssh/known_hosts:3
  remove with:
  ssh-keygen -f '/home/you/.ssh/known_hosts' -R 'server.example.com'

Kjør den ssh-keygen -R-kommandoen (den tar sikkerhetskopi av den gamle filen, og -R står for remove — fjern), og neste tilkobling stiller førstegangs-spørsmålet på nytt. Bekreft først, slett etterpå. Alltid.

Nøkler, skikkelig

Et nøkkelpar er to filer som hører sammen. id_ed25519.pub er den offentlige nøkkelen — en hengelås du kan dele ut til hvilken som helst server, fritt. id_ed25519 er den private nøkkelen, den eneste nøkkelen til den låsen. Den forlater aldri maskinen din, og du deler den aldri med noen.

En server som kjenner den offentlige nøkkelen din, kan bekrefte at du har den private, uten at du sender noe hemmelig over nettverket. Derfor kan nøkkelinnlogging ikke gjettes slik passord kan.

Lag et par med:

$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/you/.ssh/id_ed25519):

Trykk Enter for å godta standardplasseringen, og så:

Enter passphrase for "/home/you/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:

Bruk en passordfrase. Den krypterer den private nøkkelen der den ligger, så en stjålet bærbar pc betyr at tyven har en kryptert fil — ikke en fungerende nøkkel til serverne dine. Den åpenbare bekymringen, «må jeg ikke taste den hele tiden?», er det agenten løser lenger ned i guiden.

To detaljer verdt å vite. -t ed25519 velger en moderne nøkkeltype, kort og rask og sikker. Og ssh-keygen setter selv fornuftige rettigheter. Den private nøkkelen blir 600 (kun du), den offentlige 644. Ingen chmod nødvendig.

Hva ssh-copy-id faktisk gjør

Kommandoen ssh-copy-id installerer den offentlige nøkkelen din på en server:

$ ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/you/.ssh/id_ed25519.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Number of key(s) added: 1

Du taster serverpassordet ditt en siste gang. Bak kulissene legger ssh-copy-id én linje til en fil som heter ~/.ssh/authorized_keys i hjemmemappen din på serveren — «disse nøklene kan logge inn som meg». Én linje per betrodd nøkkel. Den setter også rettighetene serveren krever: 700 for ~/.ssh, 600 for authorized_keys.

De rettighetene er ikke kosmetiske. Serveren nektar nøkler som er for åpne — hvis alle på maskinen kunne redigere filen din med betrodde nøkler, ville nøkkelen din ikke bevise noe. Og den nekter lydløst: du får Permission denied (publickey) (listen i parentesen varierer fra server til server) uten noe hint om at rettigheter er årsaken. Hvis en nøkkel som burde fungere plutselig ikke gjør det, sjekk rettighetene først, på serveren:

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

(chmod er dekket i Rettigheter og eierskap.)

Etter ssh-copy-id logger du inn igjen, uten passord:

Hvis nøkkelen din har en passordfrase, taster du den i stedet. Et siste bry står igjen å fjerne.

Agenten — tast én gang

En agent er et lite program som holder de opplåste nøklene dine i minnet. Du gir den passordfrasen én gang per sesjon. Hver ssh etter det spør agenten, ikke deg.

De fleste skrivebord starter en agent for deg når du logger inn, og den kjører til du logger ut. Derfor spør noen terminalvinduer om passordfrasen din mens andre ikke gjør det — agenten husker nøkkelen for alt i løpet av innlogginga. For å legge til en nøkkel selv:

$ ssh-add
Enter passphrase for /home/you/.ssh/id_ed25519:
Identity added: /home/you/.ssh/id_ed25519

Uten filargument laster ssh-add standardnøkkelen din. List hva agenten holder:

$ ssh-add -l
256 SHA256:WcaEXJ8FQlIOGBsjb6UXEXztgYpymlrQUcY7P43ragA you@laptop (ED25519)

Tøm den igjen (for eksempel før du gir laptopen til noen andre):

$ ssh-add -D
All identities removed.

Den passordfrasebeskyttede nøkkelen på disken endres aldri — agenten er bare et bekvemmelighetslag. Start maskinen på nytt, og du taster passordfrasen én gang til. Nøkkelfilen forblir kryptert; du taster én passordfrase per sesjon.

Kallenavn — SSH-konfigfila

Nå har innloggingskommandoen blitt irriterende å taste. ~/.ssh/config fikser det: en ren tekstfil der du beskriver hver server én gang. Fila finnes kanskje ikke ennå — opprett den med nano ~/.ssh/config:

Host myserver
    HostName server.example.com
    User you
    Port 22
    IdentityFile ~/.ssh/id_ed25519

Etter dette kan alle disse brukes om hverandre:

$ ssh myserver
$ scp file.txt myserver:
$ rsync -av project/ myserver:/var/www/

(På scp-linja betyr et mål som slutter med en bar kolon at filen havner i hjemmemappen din på serveren.)

Hver linje gjør det den sier: HostName er den ekte adressen, User brukerkontoen, Port trengs bare hvis du ikke bruker standardporten 22, IdentityFile hvilken nøkkel som tilbys. Legg til én Host-blokk per server, med en blank linje mellom. Hold fila lesbar kun for deg (chmod 600 ~/.ssh/config) — ikke fordi ssh insisterer, men fordi den beskriver maskinene dine.

Hvor du står nå

Med nøkler, agenten og en konfigfil full av kallenavn har du nå hverdags-SSH-oppsettet de fleste fagfolk bruker. Du er også allerede langt tryggere enn hver eneste passordinnlogging du har pensjonert.

De naturlige neste stegene finnes i Fjernaksess og filoverføring: scp og rsync for å flytte filer, sftp for å utforske interaktivt. Alle bruker nøklene dine automatisk. Kommandolisten holder kommandoene på én linje hver. Skulle du en dag trenge et flagg denne guiden hoppet over, dokumenterer ssh-manualen samtlige av dem. Og når «noe» er en server du selv administrerer, sørger SSH — herding av serveren for den andre enden. Servere som bare svarer gjennom en annen server, nås med ProxyJump — én konfiglinje, dokumentert i ssh_config-manualen sammen med alt annet.