Når du overfører filer til en ekstern Linux-server, har du noen få alternativer. En av de beste metodene er å bruke et program kalt Secure Copy, eller SCP, som kjører over SSH for raskt å overføre filer over nettverket til et eksternt system. Denne opplæringen viser deg hvordan du overfører filer sikkert i Linux ved hjelp av SCP.
SSH-konfigurasjon
På den eksterne serveren din må du installere en SSH-server. Den mest populære på Linux er OpenSSH-serveren. For å installere den, kjør en av følgende kommandoer:
# Debian/Ubuntu-basert server sudo apt install ssh # Fedora sudo dnf install openssh
Avhengig av distroen din, må du kanskje tillate SSH gjennom noen programvarebrannmurer. I Ubuntu eksisterer ikke dette problemet, men i Fedora Du må også kjøre følgende kommandoer:
sudo brannmur-cmd --add-service=ssh --permanent sudo brannmur-cmd --reload
Koble til systemet ditt via SSH
Før du kan koble til via SSH, må du vite den eksterne serverens IP-adresse. På grafiske servere vises IP-adressen i nettverksappleten i systeminnstillingene. På de fleste servere må du bruke ip-kommandoen i terminalen.
ip addr
I utgangen finner du linjen som begynner med inet innenfor ethX أو enpXsy , avhengig av hvordan nettverksgrensesnittet ditt kobles til systemet. I mitt tilfelle er det det 192.168.68.108.
å teste SSH-tilkobling , gå til Enhet Linux annerledes og type:
endring "bruker" til meg brukernavn den faktiske serveren.
Tast inn passord Denne kontoen, og du jobber. Hvis du får spørsmål vedr "Ektheten til verten kan ikke bevises." Du må bare svare med "Ja". Det er en sikkerhetssjekk utformet for å sikre at du er koblet til din faktiske server og ikke en svindel. Du bør se den samme meldingen på klientsystemet som du ser når du logger på direkte på serveren, noe som betyr at tilkoblingen var vellykket. Du bør også konfigurere SSH-tilkoblinger for maksimal sikkerhet, eller til og med Sett opp tofaktorautentisering , før du går videre til neste trinn.
Bruk SCP til å overføre filer
Nå som du har testet SSH-tilkoblingen, begynn å kopiere filer mellom de to enhetene. Sikker kopiering oppnås ved å bruke scp-kommandoen. Det grunnleggende formatet til scp-kommandoen er:
scp /PATH/TO/FILE USER@IP-ADRESSE:PATH/TO/DESIRED/DESTINATION
For eksempel for å kopiere en fil "backup.tar.gz" Fra den lokale maskinen til en mappe "backup.tar.gz" i brukerens hjemmekatalog "ramces" På den eksterne serveren med adresse IP 192.168.68.165 , bruk:
scp backup.tar.gz [e-postbeskyttet]:~/sikkerhetskopier/
På samme måte som når du kobler til med ssh, vil du bli bedt om passordet. Du vil ikke bli bedt om brukernavnet, som spesifisert i kommandoen.
Du kan også bruke jokertegn som følgende:
scp *.tar.gz [e-postbeskyttet]:~/sikkerhetskopier/
For å kopiere en fil fra den eksterne serveren til den lokale maskinen, reverser du bare parameterne:
scp [e-postbeskyttet]:~/backups/backup.tar.gz ./
Legger du merke til poenget på slutten av det? Det betyr "gjeldende mappe" , som med cp standard kommandoer أو etc. Du kan enkelt velge en annen katalog hvis du vil.
scp -r [e-postbeskyttet]:~/backups/backups-from-server/
Og det samme med jokertegn:
scp [e-postbeskyttet]:~/backups/*.txz ./
For å rekursivt kopiere en katalog til en ekstern server, bruk alternativ -r:
scp -r sikkerhetskopier/ [e-postbeskyttet]:~/sikkerhetskopier/
For å kopiere en duplikatkopi av en katalog fra den eksterne serveren til den lokale maskinen, bruk:
scp -r [e-postbeskyttet]:~/backups/ ./
Filoverføringskomprimering i SCP
Bortsett fra grunnleggende kopiering, er det også mulig å endre SCPs oppførsel under disse filoverføringene. Du kan for eksempel bruke taggen -C For å komprimere dataene som SCP sender til eksterne klienter:
scp -C backup.tar.gz [e-postbeskyttet]:/home/ramces/
Dette alternativet fungerer ved å komprimere hver datapakke når den sendes gjennom SCP. Som sådan kan dette være utrolig nyttig hvis du har en båndbreddebegrenset tilkobling og vil pålitelig sende en fil til en ekstern server.
I likhet med alternativene ovenfor, kan du også bruke -C sammen med taggen -r Komprimer filer og overfør dem rekursivt til en ekstern maskin. For eksempel, følgende kommando komprimerer og gjenoppretter en fil "backup.tar.gz" Fra min eksterne server:
scp-Cr [e-postbeskyttet]:/home/ramces/backups /home/ramces/
Optimaliser dataoverføring med SCP
For det meste prøver SCP å bruke krypteringsalgoritme AES-128 for alle filoverføringene. Det er imidlertid tilfeller der denne spesielle algoritmen ikke vil være egnet for filene du vil overføre.
Når du vet dette, er det mulig å forbedre og sikre SCP ytterligere ved direkte å endre krypteringsalgoritmen for en spesifikk overføring. For å gjøre dette må du bruke taggen -c etterfulgt av koden du vil bruke.
For eksempel flytter følgende kommando en fil "backup.tar.gz" til min eksterne server ved hjelp av AES-256:
scp -c aes256-ctr ./backup.tar.gz [e-postbeskyttet]:/home/ramces/
Dessuten gir det deg muligheten -c Oppgi også en liste over chiffer du vil bruke til å overføre en bestemt fil. For eksempel bruker følgende kommando begge deler AES-192 و AES-256 mens du overfører en fil "backup.tar.gz" Til min eksterne server:
scp -c aes192-ctr, aes256-ctr ./backup.tar.gz [e-postbeskyttet]:/home/ramces/
Begrens båndbreddebruk i SCP
Selv om filpakkekomprimering kan hjelpe deg å bruke SCP under dårlige nettverksforhold, kan det også begrense båndbredden programmet bruker under overføring. Dette er nyttig i tilfeller der du bruker en begrenset tilkobling og ikke vil at SCP skal ta over nettverksbåndbredden.
For å begrense den effektive båndbredden til programmet, må du bruke tag -l etterfulgt av det maksimale beløpet du ønsker I kilobit per sekund (Kb/s). Hvis du for eksempel kjører følgende kommando, flyttes en fil "backup.tar.gz" Til min eksterne server med en effektiv båndbredde på 1600 Kb/s:
scp -l 1600 ./backup.tar.gz [e-postbeskyttet]:/home/ramces/
tele-til-tele med SCP
Bortsett fra å kopiere lokale filer til din eksterne server og omvendt, kan du også bruke SCP til å administrere flere eksterne servere fra din lokale maskin, fordi SCP bare håndterer filoverføringer og ikke skiller mellom en lokal maskin og en ekstern maskin.
For å overføre mellom to eksterne servere, må du eksplisitt oppgi brukernavnet og adressen til hver av disse maskinene. Hvis du for eksempel kjører følgende kommando, flyttes en fil "remote-backup.tar.gz" min mellom to eksterne servere:
scp [e-postbeskyttet]:/home/ramces/remote-backup.tar.gz [e-postbeskyttet]:/home/ramces/
Bruk en proxy med SCP
Som standard bruker SCP din lokale maskins IP-adresse når den overfører filer mellom to forskjellige verter. Selv om dette er helt greit i normale situasjoner, kan det være et problem hvis det lokale nettverket begrenser SCP-aktivitet. En rask måte å håndtere dette problemet på er å sende din lokale tilkobling gjennom en SSH-proxy.
For å gjøre dette må du bruke en tag -o etterfulgt av et alternativ ProxyCommand. Dette lar deg opprette en grunnleggende SSH-tilkobling til en ny enhet som igjen vil utføre SCP-kommandoen din. For eksempel vil kjøring av følgende opprette en ny SSH-agent på en ekstern maskin og overføre en fil "backup.tar.gz" bruker det:
scp -o "ProxyCommand ssh [e-postbeskyttet] nc %h %p" ./backup.tar.gz [e-postbeskyttet]:/home/ramces/
Endre standardporten i SCP
Bortsett fra å lage en grunnleggende SSH-proxy, kan du også endre standardporten for SCP. Dette er spesielt nyttig hvis du sikrer en Linux-server og ikke ønsker å avsløre noen virtuelle porter.
For å bruke SCP med en annen port, må du bruke et flagg -P etterfulgt av portnummeret du vil bruke. For eksempel vil følgende kommando kopiere en katalog "Sikkerhetskopiering" rekursivt og koble til den eksterne serveren ved hjelp av porten 2222:
scp -r -P 2222 ./backup [e-postbeskyttet]:/home/ramces/
Bruk SCP Stillemodus
Til slutt er det også mulig å fullstendig fjerne enhver terminalutgang fra SCP-kommandoen. Dette er spesielt nyttig hvis du vil lage et ikke-interaktivt skript som kjører i terminalen din. Ikke bare det, men du kan også automatisere denne prosessen fullt ut ved å opprette cronjob og overføre SSH-nøkkel privat til serveren din.
For å lage en stillegående SCP-transport må du bruke taggen -q. For eksempel vil følgende kommando flytte en fil "backup.tar.gz" stille til min eksterne server:
scp -q ./backup.tar.gz [e-postbeskyttet]:/home/ramces/
ofte stilte spørsmål
Q1. Fjernkontrollen min til å teleportere fungerer ikke i SCP. Hvordan kan jeg fikse dette?
svar. Dette problemet er mest sannsynlig forårsaket av en blokkert port i en av den eksterne maskinens konfigurasjonsfiler. For å fikse dette, sørg for at standardporten for SSH er åpen på begge enhetene.
Dette problemet kan også være forårsaket av at en av de eksterne maskinene dine er bak en CG-NAT-tilkobling, så enhver ekstern tilkobling til den eksterne maskinen vil ikke løse seg ordentlig. For å løse dette problemet må du bruke VLAN-programvare , Som for eksempel Yggdrasil , som lar deg passere CG-NAT.
Spørsmål 2. Jeg slo på SCP-proxyen og den eksterne verten lukket tilkoblingen. Hva kan jeg gjøre?
svar. Dette problemet skyldes mest sannsynlig et problem med proxy-maskinen din. For å starte SSH-agenten riktig, sørg for at maskinen du vil bruke har en OpenSSH-server og netcat. For å installere disse programmene i Ubuntu, Kjør følgende kommando: sudo apt installer ssh netcat.
Q3. Er det mulig å finne ut alle tilgjengelige chiffer for SCP?
svar. Som standard er SCP avhengig av SSH-protokollen for krypteringsfunksjonene. På grunn av dette kan du bruke SSH-skriptet til å skrive ut en liste over chiffer som du kan bruke sammen med SCP. Du kan for eksempel løpe ssh -Q chiffer Skriver ut en kort liste over alle tilgjengelige chiffer på enheten.