Sikker FTP og SFTP i Linux: Komplett guide

Filoverføringsprotokollen, selv om den er eldre enn de fleste av oss, er fortsatt relevant. FTP mangler sikkerheten som moderne protokoller tilbyr, men det kan likevel være nødvendig å bruke den. Her er en veiledning om hvordan.

Viktig advarsel: Unngå FTP over Internett

La oss slå dette fast med en gang: File Transfer Protocol (FTP) stammer fra tidlig 1970-tallet og ble utviklet uten tanke på sikkerhet. Den benytter seg ikke av kryptering. Det betyr at påloggingsinformasjon som brukernavn og passord, i tillegg til dataene som lastes opp eller ned, overføres i klartekst. Alle som har tilgang til nettverket kan i prinsippet se informasjonen din. Likevel har FTP fortsatt sin nytteverdi.

Dersom du overfører filer innenfor et lokalt nettverk, er det relativt trygt – så lenge ingen overvåker trafikken på nettverket for å fange opp sensitive dokumenter under overføringen. Hvis filene ikke er konfidensielle eller sensitive på noen måte, går det an å flytte dem rundt på det interne nettverket ved hjelp av FTP. Linux har et standard ftp-kommandolinjeverktøy for akkurat denne typen situasjoner.

Du bør imidlertid absolutt unngå å bruke ftp-kommandoen for å koble til eksterne ressurser over internett. For dette formålet bør du bruke sftp kommandolinjeprogrammet, som benytter den sikre SSH File Transfer Protocol. Vi vil gå gjennom begge disse verktøyene i denne guiden.

For å illustrere hvorfor du aldri bør bruke FTP over internett, se på skjermbildet under. Det viser et FTP-passord i klartekst. Hvem som helst på nettverket, eller i kommunikasjonslinjen mellom deg og FTP-serveren på internett, kan lett se at passordet er «MySecretPassword».

Uten kryptering kan en ondsinnede aktør også endre filene du laster opp eller ned under transport.

ftp-kommandoen

Forutsatt at du har en gyldig konto på en FTP-server, kan du koble til den med følgende kommando. I denne artikkelen erstatter du IP-adressen i kommandoene med IP-adressen til den FTP-serveren du ønsker å koble deg til.

ftp  192.168.4.25

Advarsel: Bruk kun ftp-kommandoen for å koble deg til servere på et pålitelig, lokalt nettverk. For å overføre filer over internett, bruk sftp-kommandoen, som er omtalt nedenfor.

FTP-serveren svarer med en velkomstmelding. Ordlyden i denne meldingen kan variere fra server til server. Deretter ber den om brukernavnet for kontoen du vil logge på med.

Merk at IP-adressen til serveren du kobler deg til vises, etterfulgt av ditt Linux-brukernavn. Hvis kontonavnet ditt på FTP-serveren er det samme som Linux-brukernavnet ditt, kan du bare trykke på Enter-tasten. Dette vil bruke Linux-brukernavnet ditt som kontonavn på FTP-serveren. Hvis Linux-brukernavnet ditt og FTP-kontonavnet er forskjellig, skriv inn FTP-kontoens brukernavn og trykk Enter.

Innlogging på FTP-serveren

Du vil nå bli bedt om å skrive inn passordet for FTP-serveren. Skriv inn passordet og trykk Enter. Passordet vil ikke vises på skjermen. Hvis kombinasjonen av FTP-brukernavn og passord blir bekreftet av FTP-serveren, vil du være logget på.

Du vil få presentert ftp>-ledeteksten.

Utforske og hente filer

Først vil du sannsynligvis ønske å se en liste over filene på FTP-serveren. ls-kommandoen gjør nettopp det. Vår bruker ser at filen gc.c finnes på FTP-serveren, og ønsker å laste den ned til sin egen datamaskin. I FTP-språk er hans datamaskin den «lokale datamaskinen».

Kommandoen for å laste ned (eller «hente») en fil er get. Vår bruker gir derfor kommandoen get gc.c. De skriver get, et mellomrom og deretter navnet på filen de vil hente.

FTP-serveren svarer ved å overføre filen til den lokale datamaskinen, og bekrefter at overføringen har skjedd. Filens størrelse og overføringstid vises også.

ls
get gc.c

For å laste ned flere filer samtidig, bruk mget-kommandoen (multiple get). mget-kommandoen vil be deg om å bekrefte om du vil laste ned hver fil etter tur. Svar ved å trykke «y» for ja og «n» for nei.

Dette kan være kjedelig ved et stort antall filer. Derfor er samlinger av relaterte filer ofte lagret som enkelt tar.gz- eller tar.bz2-filer på FTP-servere.

mget *.c

Opplasting av filer til FTP-serveren

Avhengig av tillatelsene som er gitt for din FTP-konto, kan du kanskje laste opp (eller «sette») filer til serveren. For å laste opp en fil, bruk put-kommandoen. I vårt eksempel laster brukeren opp en fil som heter Songs.tar.gz til FTP-serveren.

put Songs.tar.gz

Som du kanskje forventer, finnes det en kommando for å laste opp flere filer til FTP-serveren samtidig. Den kalles mput (multiple put). Akkurat som mget-kommandoen vil mput be om en «y» eller «n»-bekreftelse for opplasting av hver fil, en etter en.

Det samme argumentet for å pakke sett av filer i tar-arkiver gjelder både for opplasting og nedlasting. Vår bruker laster opp flere «.odt»-filer med følgende kommando:

mput *.odt

Opprette og endre mapper

Dersom brukerkontoen din på FTP-serveren tillater det, kan du opprette mapper. Kommandoen for å gjøre dette er mkdir. Merk at enhver mappe du oppretter med mkdir-kommandoen vil bli opprettet på FTP-serveren, ikke på din lokale datamaskin.

For å endre mapper på FTP-serveren, bruk cd-kommandoen. Når du bruker cd-kommandoen, vil ikke ftp>-ledeteksten endre seg for å vise den nye aktuelle mappen. Kommandoen pwd (print working directory) vil vise deg den aktuelle mappen.

Vår FTP-bruker oppretter en mappe som heter musikk, endrer til den nye mappen, bekrefter hvor de er ved hjelp av pwd-kommandoen, og laster deretter opp en fil til mappen.

mkdir music
cd music
pwd
put songs.tar.gz

For å raskt flytte til den overordnede mappen til den aktuelle mappen, bruk cdup-kommandoen.

cdup

Få tilgang til den lokale datamaskinen

For å endre mappen på den lokale datamaskinen, kan du bruke lcd-kommandoen ved ftp>-ledeteksten. Det er imidlertid lett å miste oversikten over hvor du er i det lokale filsystemet. En mer praktisk måte å få tilgang til det lokale filsystemet er å bruke !-kommandoen.

!-kommandoen åpner et skallvindu til den lokale datamaskinen. Du kan gjøre alt i dette skallet som du kan i et vanlig terminalvindu. Når du skriver exit, kommer du tilbake til ftp>-ledeteksten.

Vår bruker har brukt !-kommandoen og åpnet et skallvindu på den lokale datamaskinen. De har kjørt en ls-kommando for å se filene i mappen og deretter skrevet exit for å gå tilbake til ftp>-ledeteksten.

!
ls
exit

Endre filnavn

For å endre filnavn på FTP-serveren, bruk rename-kommandoen. Her endrer vår FTP-bruker navnet på en fil med rename og bruker deretter ls-kommandoen for å liste filene i mappen.

rename songs.tar.gz rock_songs.tar.gz
ls

Slette filer

Bruk delete-kommandoen for å slette filer på FTP-serveren. For å slette flere filer samtidig, bruk mdelete-kommandoen. Du vil bli bedt om å gi en «y» eller «n»-bekreftelse for sletting av hver fil.

Her har vår FTP-bruker listet opp filene for å se navnene og deretter valgt en å slette. De bestemmer seg for å slette dem alle.

ls
delete gc.o
mdelete *.o

Bruke sftp-kommandoen

De som er kjent med IP-adressesystemet vil ha lagt merke til at 192.168-adressen til FTP-serveren som er brukt i eksemplene ovenfor, er en intern IP-adresse, også kalt en privat IP-adresse. Som vi advarte om i begynnelsen av denne artikkelen, bør ftp-kommandoen kun brukes på interne nettverk.

Dersom du vil koble deg til en ekstern eller offentlig FTP-server, bruk sftp-kommandoen. Vår bruker skal koble seg til en SFTP-konto som heter demo på den offentlig tilgjengelige FTP-serveren på test.trebex.net.

Når de kobler seg til, får de beskjed om at forbindelsen er opprettet. De blir også informert om at ektheten til verten ikke kan verifiseres. Dette er normalt ved første tilkobling til en ny vert. De trykker «y» for å godta tilkoblingen.

Siden brukernavnet (demo) ble angitt på kommandolinjen, blir de ikke spurt om brukernavnet. De blir kun bedt om passordet. Dette legges inn, bekreftes og aksepteres, og de får presentert sftp>-ledeteksten.

sftp [email protected]

FTP-kommandoene vi har beskrevet ovenfor fungerer på samme måte i en SFTP-økt, med følgende unntak.

For å slette en fil bruk rm (FTP bruker delete)
For å slette flere filer bruk rm (FTP bruker mdelete)
For å flytte til overordnet mappe bruk cd .. (FTP bruker cdup)

Vår bruker har brukt noen få kommandoer i SFTP-økten. De har brukt ls for å liste filene, og cd for å bytte til pub-mappen. De har brukt pwd for å skrive ut den aktuelle mappen.

Det finnes andre måter å overføre filer i Linux-verdenen, spesielt scp (sikker kopi), men her har vi fokusert på FTP og SFTP. Brukt i de rette sammenhengene vil disse to kommandoene dekke dine behov for fillagring og -henting på en god måte.