Säker filöverföring mellan Linux-servrar med scp
Om du behöver flytta filer mellan servrar i ett Linux-system finns det flera metoder att välja mellan. Om säkerheten är prioritet, är scp (secure copy) ett utmärkt alternativ. Det tillåter filöverföring med kryptering, vilket eliminerar oron för dataintrång. I den här artikeln förklarar vi hur du använder scp-kommandot för att säkert flytta filer i ditt Linux-system.
Vad är scp-kommandot?
Scp, som står för Secure Copy Protocol, används för att överföra filer och kataloger mellan två system över en SSH-anslutning (Secure Shell). SSH garanterar filernas säkerhet genom att kryptera dem under överföringen. Scp kan ses som en säker variant av det traditionella cp-kommandot. Mer information om cp-kommandot finns i vår artikel om Linux-terminalkommandon.
Scp-kommandots syntax och alternativ
Innan vi går vidare till filöverföring, låt oss granska syntaxen och alternativen för scp-kommandot:
scp <alternativ> <användarnamn@källa_ip:sökväg/till/källa/fil> <användarnamn@mål_ip:mål/sökväg>
Förklaring av syntaxen:
<användarnamn@källa_ip:sökväg/till/källa/fil>
anger källsystemet, det vill säga platsen varifrån filerna ska flyttas.<användarnamn@mål_ip:mål/sökväg>
anger målsystemet, det vill säga platsen dit filerna ska flyttas.
Om någon av parametrarna utelämnas, letar scp-kommandot först efter filen lokalt och kopierar den därefter lokalt. Här följer en lista med alternativ som kan användas med kommandot:
Alternativ | Beskrivning |
-P | Anger porten för anslutning till värdsystemet. Om den inte anges används standardporten 22. |
-p | Bevarar modifierings- och åtkomsttider samt lägen från originalfilen under kopiering. |
-r | Kopierar hela kataloger rekursivt till målsystemet. |
-J | Används för att ansluta till käll- och målsystem via en proxyserver. |
-3 | Kopierar filer till både målsystemet och lokala systemet. |
-4 | Tvingar scp-kommandot att endast använda IPv4-adresser. |
-6 | Tvingar scp-kommandot att endast använda IPv6-adresser. |
Steg för filkopiering med scp
Innan scp kan användas, måste följande vara uppfyllt på både käll- och målsystemet:
- SSH måste vara installerat.
- Du behöver root-åtkomst eller användare med sudo-privilegier.
Kopiera filer från lokal till fjärrvärd
Använd följande syntax för att flytta en fil från ditt lokala system till en fjärrvärd:
scp <alternativ> <sökväg_till_lokal_fil> <fjärranvändare>@<fjärrmål_ip>:<mål/sökväg>
Låt oss ta ett konkret exempel:
scp test.txt [email protected]:/home/remote2/Documents/
Här betyder:
test.txt
filen som ska överföras (ligger i aktuell mapp).test
användarnamnet på målsystemet.139.144.11.105
IP-adressen till målsystemet./home/remote2/Documents/
målplatsen på fjärrsystemet.
Kopiera filer från fjärrvärd till lokal
För att kopiera en fil från en fjärrvärd till din lokala dator, använd denna syntax:
scp <alternativ> <fjärranvändare>@<fjärrvärd_ip>:<sökväg_till_fil_på_fjärr> <sökväg_för_lokal_fil>
Exempelvis:
scp [email protected]:/home/test/test1.py ~/test1.py
I detta exempel:
test
är användarnamnet på fjärrvärden.10.10.11.113
är IP-adressen till fjärrvärden./home/test/test1.py
är filens sökväg på fjärrvärden.~/test1.py
är namnet och platsen för den lokalt sparade filen.
Överföra filer mellan två fjärrvärdar
Scp kan också användas för filöverföring mellan två fjärrsystem. För att undvika felmeddelanden, rekommenderas att generera ett SSH-nyckelpar på källsystemet och lagra den publika nyckeln på destinationssystemet.
För att göra detta, följ dessa steg:
1. Generera ett nyckelpar på källservern:
ssh-keygen -t <krypteringsalgoritm>
2. Använd rsa
eller en annan algoritm för kryptering.
3. Välj en plats för nyckeln, eller använd standardplatsen.
4. Ange en lösenfras (valfritt).
5. Kopiera den publika nyckeln till destinationsservern:
ssh-copy-id <målanvändarnamn>@<mål_ip>
Obs: Lösenordsfri inloggning fungerar bara för den användare som nyckeln genererades för.
6. Använd följande syntax för att flytta filer mellan fjärrsystem:
scp <alternativ> <fjärranvändare_1>@<fjärrvärd_1_ip>:<sökväg_till_fil_att_överföra> <fjärranvändare_2>@<fjärrvärd_2_ip>:<mål/sökväg>
Exempelvis:
scp [email protected]:/home/test1/test.txt [email protected]:/home/remote2/Documents/test1.txt
Här betyder:
remote1
användarnamnet på källsystemet.10.10.11.113
IP-adressen för källsystemet./home/test1/test.txt
sökvägen till filen som ska överföras.remote2
användarnamnet på målsystemet.10.11.27.111
IP-adressen för målsystemet./home/remote2/Documents/test1.txt
sökvägen och filnamnet för den mottagna filen.
Överför flera filer med scp
För att överföra flera filer samtidigt, kan du använda följande syntax:
scp <sökväg_till_fil_1> <sökväg_till_fil_2> <mottagaranvändare>@<målsystem_ip>:<mål/sökväg>
Exempel:
scp -P 22 test1.txt test2.py test3.sh test4.c [email protected]:/home/remote_1/Documents
I exemplet betyder:
-p 22
porten 22 används för anslutning.test1.txt test2.py test3.sh test4.c
filerna som ska överföras.remote_1
användarnamnet på målsystemet.10.10.11.113
IP-adressen till målsystemet./home/remote_1/Documents
platsen för att spara de mottagna filerna.
Du kan också använda jokertecken för att skicka filer med samma tillägg, exempelvis:
scp *<tillägg> <mottagaranvändare>@<målsystem_ip>:<mål/sökväg>
För att skicka alla .py-filer till en fjärrserver kan du använda detta kommando:
scp *.py [email protected]:/home/remote_1/
Här betyder:
*.py
alla filer som slutar på .py.remote1
användarnamnet på mottagarsystemet.10.10.11.113
IP-adressen till mottagarsystemet./home/remote_1/
platsen för de mottagna filerna.
Vanliga frågor
Är scp-filöverföring säker?
Ja, scp använder SSH-kryptering och autentisering, vilket ger säker filöverföring.
Är scp säkrare än SFTP?
Både scp och SFTP är lika säkra. Scp har fördelen med snabbare överföringshastigheter, speciellt i nätverk med hög latens.
Sammanfattning
Scp är ett praktiskt verktyg för säker filöverföring i nätverk. Genom att förstå scp-alternativen och syntaxen kan du enkelt överföra filer säkert och effektivt, även i nätverk med hög latens. För att förbättra dina filhanteringskunskaper i Linux, kan du läsa mer om filnamnändring och borttagning. Om du stöter på problem med scp, lämna gärna en kommentar.