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
yesen 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:
$ ssh [email protected]
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.