Slik bruker du scp-kommando til å overføre filer sikkert i Linux

Sikker filoverføring mellom servere med SCP i Linux

La oss anta at du trenger å flytte filer mellom servere på et Linux-system. Det finnes flere metoder for å gjøre dette, men hvis sikkerhet er din høyeste prioritet, er det noen få alternativer som skiller seg ut. Den enkleste og mest effektive metoden er å bruke kommandoen `scp`, også kjent som sikker kopi, for å overføre filene dine trygt. Denne artikkelen vil forklare hvordan du kan overføre filer på en sikker måte ved å bruke `scp`-kommandoen i et Linux-miljø.

Hva er `scp`-kommandoen i Linux?

Når det gjelder overføring av filer over et nettverk på en sikker måte, er `scp`-kommandoen svært nyttig. `scp` står for Secure Copy Protocol, og det muliggjør overføring av både filer og mapper mellom to datamaskiner via en SSH-tilkobling (Secure Shell). Med SSH er filene dine beskyttet av kryptering som standard. Enkelt sagt, `scp`-kommandoen er en sikrere variant av `cp`-kommandoen. Du kan lære mer om `cp`-kommandoen i vår artikkel om Linux Terminal-kommandoer.

Hvordan bruke `scp`-kommandoen: Syntaks og alternativer

Før vi begynner å overføre filer med `scp`, la oss se på kommandoens syntaks og tilgjengelige alternativer:

`scp` `<alternativer>` `<kilde_bruker>@<kilde_ip>:<sti/til/kilde/fil>` `<mål_bruker>@<mål_ip>:<sti/til/mål/fil>`

La oss bryte ned denne syntaksen:

  • `<kilde_bruker>@<kilde_ip>:<sti/til/kilde/fil>` refererer til kildesystemet hvor filene eller mappene skal kopieres fra.
  • `<mål_bruker>@<mål_ip>:<sti/til/mål/fil>` angir målsystemet hvor filene eller mappene skal overføres til.

Hvis en av disse parametrene utelates, vil `scp` først forsøke å finne filen lokalt og deretter kopiere filen internt på maskinen. Her er noen av de vanlige alternativene som kan brukes med kommandoen:

Alternativ Beskrivelse
`-P` Spesifiserer portnummeret for tilkobling til vertssystemet. Hvis ikke spesifisert, brukes port 22 som standard.
`-p` Bevarer endringstidspunkter, tilgangstidspunkter og filmoduser fra den originale filen ved kopiering.
`-r` Kopierer hele mapper rekursivt til målsystemet.
`-J` Brukes for å koble til kilde- og målsystemer via en proxy-server (jump host).
`-3` Ved bruk av dette flagget, kopieres filene både til målsystemet og lokalt.
`-4` Tvinger `scp`-kommandoen til å kun bruke IPv4-adresser.
`-6` Tvinger `scp`-kommandoen til å kun bruke IPv6-adresser.

Hvordan kopiere filer med `scp`-kommandoen

Før du bruker `scp`-kommandoen i Linux, må du sjekke at følgende betingelser er oppfylt både på kilde- og målsystemet:

  • SSH må være installert og konfigurert.
  • Du må ha root-tilgang eller en bruker med sudo-rettigheter.

Kopier filer fra lokal maskin til ekstern server

Hvis du skal overføre en fil fra din lokale maskin til en ekstern server, må du bruke denne syntaksen:

`scp` `<alternativer>` `<sti_til_lokal_fil>` `<ekstern_bruker>@<ekstern_mål_ip>:<sti_for_lagring_eksternt>`

Et konkret eksempel vil gjøre det klarere:

`scp` `test.txt` `<email protected>`: `/home/remote2/Documents/`

Her:

  • `test.txt` er navnet på filen som skal overføres og befinner seg i nåværende mappe på lokal maskin.
  • `test` er brukernavnet på målsystemet.
  • `139.144.11.105` er IP-adressen til målsystemet.
  • `/home/remote2/Documents/` er lokasjonen på målsystemet der den overførte filen skal lagres.

Kopier filer fra ekstern server til lokal maskin

For å overføre en fil fra en ekstern server til din lokale maskin, bruk denne `scp`-kommandoen:

`scp` `<alternativer>` `<ekstern_bruker>@<ekstern_vert_ip>:<sti_til_fil_eksternt>` `<sti_til_lagring_lokalt>`

La oss si at du skal hente filen `test.py` fra serveren du jobber på, bruk denne kommandoen:

`scp` `<email protected>`:`/home/test/test1.py` `~/test1.py`

Her:

  • `test` er brukernavnet på den eksterne serveren.
  • `10.10.11.113` er IP-adressen til den eksterne serveren.
  • `/home/test/test1.py` er banen til filen som skal overføres fra serveren.
  • `~/test1.py` er navnet på filen etter overføringen og lagring i hjemme-mappen.

Overfør filer mellom to eksterne servere

Med `scp` kan du også overføre filer mellom to eksterne servere. Men før du overfører, er det anbefalt å generere en privat og offentlig SSH-nøkkel på kildeserveren og lagre en kopi av den offentlige nøkkelen på målserveren.

Brukere opplever ofte feilen «Vertsnøkkelbekreftelse mislyktes» ved overføring mellom to eksterne servere. For å unngå dette, bruk en SSH-nøkkel som en ekstra sikkerhetsforanstaltning. Vi beskriver hvordan du gjør det her:

1. Generer et offentlig/privat nøkkelpar på kildeserveren med denne kommandoen:

`ssh-keygen -t` `<krypteringsalgoritme>`

2. For `<krypteringsalgoritme>`, kan du bruke `rsa`, som er den mest brukte, eller en annen algoritme du foretrekker.

3. Du vil bli bedt om å velge plasseringen for å lagre SSH-nøkkelen. Du kan lagre den hvor du vil eller i standardmappen.

4. For passordfrasen kan du skrive inn et passord eller la den stå tom ved å trykke Enter.

5. Kopier deretter den offentlige nøkkelen til målserveren med kommandoen nedenfor. Dette lar deg også logge inn på destinasjonssystemet uten passord ved hjelp av SSH.

`ssh-copy-id` `<mål_brukernavn>@<mål_ip>`

Merk: Passordfri pålogging fungerer kun for brukeren du genererte SSH-nøkkelen for.

6. Etter å ha opprettet og lagret SSH-nøkkelen på den eksterne serveren, bruk denne `scp`-syntaksen for å overføre filer mellom de to eksterne Linux-systemene:

`scp` `<alternativer>` `<ekstern_bruker_1>@<ekstern_kilde_ip>:<sti_til_fil_overfør>` `<ekstern_bruker_2>@<ekstern_mål_ip>:<sti_til_lagring_eksternt>`

La oss si at du må overføre filen `test.txt` fra en ekstern server til en annen ekstern server, bruk denne kommandoen:

`scp` `<email protected>`:`/home/test1/test.txt` `<email protected>`:`/home/remote2/Documents/test1.txt`

I dette eksemplet:

  • `remote1` er brukernavnet på den eksterne avsenderverten.
  • `10.10.11.113` er IP-adressen til den eksterne avsenderverten.
  • `/home/test1/test.txt` er stien til filen som skal sendes.
  • `remote2` er brukernavnet på den eksterne mottakerverten.
  • `10.11.27.111` er IP-adressen til den eksterne mottakerverten.
  • `/home/remote2/Documents/test1.txt` er navnet og stien der filen skal lagres.

Overfør flere filer med `scp`-kommandoen

Å overføre mange filer en etter en kan være tungvint. Bruk i stedet denne syntaksen for å utveksle flere filer med `scp`:

`scp` `<sti_til_fil_1>` `<sti_til_fil_2>` `<ekstern_mottaker>@<ekstern_mål_ip>:<sti_til_lagring_eksternt>`

La oss si at du skal sende fire filer, `test1.txt`, `test2.py`, `test3.sh` og `test4.c` til en ekstern mottaker, du kan da bruke denne kommandoen:

`scp` `-P 22` `test1.txt` `test2.py` `test3.sh` `test4.c` `<email protected>`:`/home/remote_1/Documents`

La oss se hva denne kommandoen gjør:

  • `-P 22` brukes for å spesifisere tilkobling via port 22.
  • `test1.txt`, `test2.py`, `test3.sh` og `test4.c` er navnene på filene som skal overføres.
  • `remote_1` er brukernavnet til mottakersystemet.
  • `10.10.11.113` er IP-adressen til mottakersystemet.
  • `/home/remote_1/Documents` viser til stien for lagring av mottatte filer.

Du kan også bruke jokertegn for å sende flere filer med samme filtype, som vist her:

`scp` `<jokertegn>` .`<filtype>` `<ekstern_mottaker>@<ekstern_mål_ip>:<sti_til_lagring_eksternt>`

Hvis du f.eks skal sende alle `.py`-filer til en ekstern server, kan du bruke denne kommandoen:

`scp` `*.py` `<email protected>`:`/home/remote_1/`

Her:

  • `*.py` betyr alle filer som har filtypen `.py`.
  • `remote1` er mottakerens brukernavn.
  • `10.10.11.113` er mottakerens IP-adresse.
  • `/home/remote_1/` er plasseringen for lagring av de mottatte filene.

Ofte stilte spørsmål

Er SCP-filoverføring sikker?

Secure Copy Protocol (scp) er basert på SSH-teknologi og bruker kryptering og autentisering for å utveksle filer mellom to maskiner. Dette sikrer full datasikkerhet og integritet mellom de to maskinene.

Er SCP sikrere enn SFTP?

Både SCP- og SFTP-protokoller har samme sikkerhetsnivå. Den største fordelen med å bruke `scp` fremfor SFTP er den raskere overføringshastigheten, som spesielt er nyttig i nettverk med høy latenstid.

Sikker filoverføring med `scp`-kommandoen i Linux

På et eller annet tidspunkt må alle brukere utveksle filer over nettverket. `scp`-kommandoen gjør det enkelt å overføre filer på en sikker og effektiv måte, selv over nettverk med høy latenstid. Det er også nyttig å kjenne til de ulike alternativene og syntaksen til `scp`. Du kan også se våre guider om hvordan du endrer navn på filer i Linux og hvordan du sletter filer i Linux for å forbedre dine filbehandlingsferdigheter i operativsystemet. Vi håper denne artikkelen har hjulpet deg med å lære hvordan du bruker `scp`-kommandoen til å overføre filer i Linux. Hvis du støter på problemer underveis, gi oss gjerne beskjed i kommentarfeltet.