Skal du flytte filer til og fra din hjemmesides server, har du typisk tre muligheder: FTP, FTPS og SFTP. De lyder næsten ens, men der er stor forskel på dem. Det korte svar er: brug SFTP, helst med en SSH-nøgle i stedet for adgangskode, og brug aldrig almindelig FTP. Her forklarer vi hvorfor, og hvordan du kommer i gang.
Hvad er FTP?
FTP (File Transfer Protocol) er en af internettets ældste protokoller. Den første version er fra 1971, og den version, der bruges i dag, blev beskrevet i 1985, længe før nogen tænkte på kryptering. FTP bruger to separate TCP/IP-forbindelser: én til kommandoer, normalt på port 21, og en ny forbindelse for hver fil eller mappeoversigt, der overføres. Hvem der åbner dataforbindelsen, afhænger af, om der køres aktiv eller passiv tilstand, og det er grunden til, at FTP ofte driller bag firewalls og routere.
Det alvorligste problem er dog, at alt sendes ukrypteret, også brugernavn og adgangskode. Enhver, der kan se trafikken undervejs, fx på et offentligt wifi, kan læse dine loginoplysninger og få fuld adgang til filerne på din server.
FTPS og SFTP er to forskellige ting
Navnene forvirrer, fordi de ligner hinanden, men de to sikre alternativer har intet med hinanden at gøre. FTPS er almindelig FTP sendt gennem en krypteret forbindelse med TLS, den samme kryptering med TLS, som beskytter HTTPS. Protokollen er den samme som før, også med de to forbindelser, så firewallproblemerne er der stadig, og nu kan firewallen ikke engang se ind i trafikken for at hjælpe.
SFTP (SSH File Transfer Protocol) er en helt anden protokol, der kører inde i en SSH-forbindelse, den samme, man bruger til at logge ind på en server via terminalen. Alt går gennem én krypteret forbindelse på én port, som regel 22, og du kan logge ind med en SSH-nøgle i stedet for en adgangskode.
| FTP | FTPS | SFTP | |
|---|---|---|---|
| Krypteret | Nej | Ja (TLS) | Ja (SSH) |
| Bygger på | FTP | FTP | SSH |
| Forbindelser | To eller flere | To eller flere | Én |
| Typisk port | 21 | 21 eller 990 | 22 |
| Login med nøgle | Nej | Med klientcertifikat, sjældent | Ja |
Hvad du bør bruge
SFTP er det bedste valg næsten altid. Det er krypteret, virker gennem firewalls, understøttes af alle gængse filprogrammer, og det giver mulighed for login med nøgler. Tilbyder din hosting kun FTPS, er det et acceptabelt alternativ. Almindelig FTP bør være slået fra på serveren, og tilbyder din hostingudbyder kun det, er det et tegn på, at du bør kigge efter en anden.
Sådan kommer du i gang med SFTP
- Find SFTP- eller SSH-oplysningerne i dit hostingkontrolpanel: vært, port og brugernavn.
- Lav en SSH-nøgle på din computer, fx med
ssh-keygen, og læg den offentlige del ind hos din hosting. - Åbn et filprogram, der understøtter SFTP, som FileZilla, Cyberduck eller WinSCP, eller brug din kodeeditor.
- Vælg protokollen SFTP (ikke FTP), og indtast vært, port og brugernavn.
- Godkend serverens fingeraftryk første gang, du forbinder, efter at have tjekket, at det passer med det, hostingen oplyser.
Nøglen laver du med én kommando, og typen ed25519 er det gode standardvalg i dag. Du behøver heller ikke et filprogram: SFTP er indbygget i terminalen på macOS, Linux og nyere Windows. Porten er 22, medmindre din hosting har valgt en anden:
ssh-keygen -t ed25519 lav et nøglepar
sftp -P 22 [email protected] forbind
ls vis filer på serveren
cd wp-content/uploads skift mappe på serveren
get debug.log hent en fil til din computer
put billede.jpg send en fil til serveren
exit afslutDen private nøgle bliver på din computer og må aldrig sendes til nogen. Det er kun den offentlige del, typisk filen, der ender på .pub, der lægges ind hos hostingen.
SFTP og WordPress
Mange møder først FTP, når WordPress beder om “forbindelsesoplysninger” for at installere eller opdatere et plugin. Det sker, fordi WordPress ikke har tilladelse til at skrive direkte i sine egne filer på serveren, og derfor forsøger at gøre det via FTP i stedet. Løsningen er ikke at indtaste en FTP-adgangskode, men at få filrettighederne sat rigtigt op, så WordPress kan opdatere sig selv, eller at lade opdateringerne ske et andet sted end i WordPress’ eget kontrolpanel.
Udgangspunktet, som WordPress selv anbefaler (på engelsk), er 755 på mapper og 644 på filer. Kører PHP som den bruger, der ejer filerne, kan WordPress skrive dem selv og spørger ikke efter FTP-adgang. wp-config.php indeholder databasens adgangskode og bør være strammere, så andre brugere på serveren ikke kan læse den. Ser du 777 nogen steder, er det en genvej, som nogen har taget, og den bør rettes.
Til egen udvikling er manuel filoverførsel i øvrigt sjældent den bedste løsning. Retter du direkte i filer på en live-server, er der ingen historik, ingen test og ingen vej tilbage, hvis noget går galt. Et bedre flow er at have koden i et versionsstyringssystem som Git, teste ændringer på et staging-miljø og derefter udrulle dem automatisk. SFTP er stadig nyttigt til at hente logfiler, uploade en enkelt fil eller rette en akut fejl. Vil du slippe for det hele, kan filer, opdateringer og udrulning også klares som en del af løbende vedligeholdelse.
Sikkerhed
Filadgang til serveren er det samme som fuld kontrol over din hjemmeside, så den skal beskyttes derefter. Brug SSH-nøgler og slå login med adgangskode fra, hvis din hosting tillader det. Giv hver person og hvert system sin egen bruger, begræns dem til de mapper, de har brug for, og slet brugere, når et samarbejde slutter. Og gem aldrig loginoplysninger i et filprogram på en delt computer.
Ofte stillede spørgsmål
Er SFTP langsommere end FTP?
Knap mærkbart. Krypteringen koster lidt, men moderne computere klarer det uden problemer.
Hvilken port bruger SFTP?
Port 22, den samme som SSH, fordi SFTP kører inden i en SSH-forbindelse. Almindelig FTP bruger port 21, og FTPS enten 21 eller 990. Nogle hostingudbydere flytter SSH til en anden port, så tjek kontrolpanelet, hvis forbindelsen ikke kommer igennem.
Kræver SFTP fuld SSH-adgang?
Nej. SFTP bruger SSH som transport, men en bruger kan godt have adgang til SFTP uden at kunne køre kommandoer på serveren. Mange hostingudbydere tilbyder netop sådan en SFTP-bruger, der kun kan se sin egen mappe.