- scp command – Secure copy
- Hoe installeer je scp
- Het gebruik van scp – basis syntax
- scp commando voorbeelden
- 1. Verbose uitvoer
- 2. Kopieer meerdere bestanden
- 3. Kopieer hele directory (recursief)
- 4. Kopieer bestanden over 2 hosts op afstand
- 5. Versnel de overdracht met compressie
- 6. Beperk het bandbreedte gebruik
- 7. Maak verbinding met een ander poortnummer op de host
- 8. Bestandsattributen behouden
- 9. Stille modus
- 10. Geef identiteitsbestand op
- 11. Gebruik een ander ssh_config bestand
- 12. Gebruik een andere cipher
- Samenvatting
scp command – Secure copy
Scp (Secure Copy) is een command line tool om bestanden te kopiëren of over te zetten tussen hosts. Het gebruikt hetzelfde soort beveiligingsmechanisme als het ssh programma.
In feite gebruikt het een ssh-verbinding op de achtergrond om de bestandsoverdracht uit te voeren. scp verwijst zowel naar het “protocol” dat definieert hoe secure copy zou moeten werken als naar het “programma” (commando) dat is geïnstalleerd als onderdeel van de OpenSSH suite van tools.
In deze korte tutorial zullen we een paar voorbeelden bekijken van het scp commando en hoe het gebruikt kan worden om bestanden veilig over te zetten.
Hoe installeer je scp
Scp is over het algemeen standaard geïnstalleerd op de meeste Linux distro’s als onderdeel van openssh packages. Op ubuntu/debian bijvoorbeeld, levert het openssh-client pakket het scp programma.
$ dpkg -L openssh-client | grep scp/usr/bin/scp/usr/share/man/man1/scp.1.gz
Het is het OpenSSH pakket dat de ssh, scp, sftp programma’s levert samen met vele andere gereedschappen. Dus we hoeven hier niets extra’s te doen, behalve het programma te gebruiken en te leren.
Het gebruik van scp – basis syntax
De basis syntax van scp is heel eenvoudig om te onthouden. Het ziet er als volgt uit
$ scp source_file_path destination_file_path
Het bestandspad moet, afhankelijk van de host, het volledige hostadres, het poortnummer, de gebruikersnaam en het wachtwoord bevatten, samen met het pad naar de map.
Dus als u een bestand “verstuurt” van uw lokale machine naar een machine op afstand (uploaden), ziet de syntax er als volgt uit
$ scp ~/my_local_file.txt _host.com:/some/remote/directory
Wanneer u een bestand kopieert van een host op afstand naar een lokale host (downloaden), ziet het er precies omgekeerd uit
$ scp _host.com:/some/remote/directory ~/my_local_file.txt# just download the file$ scp :/some/path/file.txt .
Dat is zo’n beetje het gebruik van scp voor gewone taken. Afgezien daarvan zijn er een paar extra opties en functies die scp ondersteunt. Laten we daar eens een kort overzicht van maken.
En ja, standaard zal scp altijd bestanden overschrijven op de bestemming. Als u dat wilt vermijden, gebruik dan een krachtiger gereedschap genaamd rsync.
scp commando voorbeelden
1. Verbose uitvoer
Met verbose uitvoer, zou het scp programma veel informatie uitvoeren over wat het op de achtergrond doet. Dit is vaak nuttig wanneer het programma faalt of niet in staat is om het verzoek te voltooien. De verbose uitvoer zou dan het exacte punt aangeven waar het programma tegen problemen aanliep.
$ scp -v ~/test.txt :/root/help2356.txtExecuting: program /usr/bin/ssh host 192.168.1.3, user root, command scp -v -t /root/help2356.txtOpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 Feb 2013debug1: Reading configuration data /home/enlightened/.ssh/configdebug1: Reading configuration data /etc/ssh/ssh_configdebug1: /etc/ssh/ssh_config line 19: Applying options for *debug1: Connecting to 192.168.1.3 port 22.debug1: Connection established...... OUTPUT TRUNCATED
De uitvoer zou groot zijn en gedetailleerde informatie bevatten over hoe de verbinding wordt gemaakt, welke configuratie- en identiteitsbestanden worden gebruikt enzovoort.
2. Kopieer meerdere bestanden
Meerdere bestanden kunnen worden gespecificeerd gescheiden door een spatie zoals dit
$ scp foo.txt bar.txt :/path/directory/
Om meerdere bestanden te kopiëren van host op afstand naar de huidige lokale directory
$ scp :/path/directory/\{foo.txt,bar.txt\} .$ scp :~/\{abc.log,cde.txt\} .
3. Kopieer hele directory (recursief)
Om een hele directory van de ene host naar de andere te kopiëren gebruikt u de r switch en specificeert u de directory
$ scp -v -r ~/Downloads :/root/Downloads
4. Kopieer bestanden over 2 hosts op afstand
Scp kan ook bestanden kopiëren van 1 host op afstand naar een andere host op afstand.
$ scp :/some/remote/dir/foobar.txt :/some/remote/dir/
5. Versnel de overdracht met compressie
Een supercoole optie om de overdracht te versnellen om tijd en bandbreedte te besparen. Het enige wat u hoeft te doen is de C optie te gebruiken om compressie in te schakelen. De bestanden worden tijdens de overdracht gecomprimeerd en op de bestemming gedecomprimeerd.
$ scp -vrC ~/Downloads :/root/Downloads
In het bovenstaande voorbeeld hebben we de hele directory verplaatst met compressie ingeschakeld. De snelheidswinst zou afhangen van hoeveel de bestanden konden worden gecomprimeerd.
6. Beperk het bandbreedte gebruik
Als u niet wilt dat scp de gehele beschikbare bandbreedte in beslag neemt, gebruik dan de l optie om de maximum snelheid in Kbit/s te beperken.
$ scp -vrC -l 400 ~/Downloads :/root/Downloads
7. Maak verbinding met een ander poortnummer op de host
Als de server op afstand een ssh daemon op een andere poort heeft draaien (standaard 22), dan moet u scp vertellen dat specifieke poortnummer te gebruiken met de ‘-P’ optie.
$ scp -vC -P 2200 ~/test.txt :/some/path/test.txt
8. Bestandsattributen behouden
De ‘-p’ optie (kleine letters), zou modificatietijden, toegangstijden, en modi van het originele bestand behouden.
$ scp -C -p ~/test.txt :/some/path/test.txt
9. Stille modus
In stille modus (‘-q’ optie ), wordt de scp uitvoer onderdrukt, en wordt de voortgangsmeter uitgeschakeld, evenals waarschuwings- en diagnostische berichten.
$ scp -vCq ~/test.txt :/some/path/test.txt
10. Geef identiteitsbestand op
Wanneer u sleutel-gebaseerde (wachtwoordloze) authenticatie gebruikt, moet u het identiteitsbestand opgeven dat de private sleutel bevat. Deze optie wordt direct doorgegeven aan het ssh commando en werkt op dezelfde manier.
$ scp -vCq -i private_key.pem ~/test.txt :/some/path/test.txt
11. Gebruik een ander ssh_config bestand
Gebruik de ‘-F’ optie om een ander ssh_config bestand op te geven.
$ scp -vC -F /home/user/my_ssh_config ~/test.txt :/some/path/test.txt
12. Gebruik een andere cipher
Scp gebruikt standaard de AES cipher/encryptie. Soms wilt u misschien een ander cijfer gebruiken. Het gebruik van een ander cijfer kan het overdrachtsproces versnellen. Van blowfish en arcfour is bijvoorbeeld bekend dat ze sneller zijn dan AES (maar minder veilig).
$ scp -c blowfish -C ~/local_file.txt :/remote/path/file.txt
In het bovenstaande voorbeeld gebruiken we het blowfish cijfer samen met compressie. Dit kan een aanzienlijke snelheidswinst opleveren, afhankelijk van de beschikbare bandbreedte.
Samenvatting
Hoewel scp zeer efficiënt is in het veilig overzetten van bestanden, mist het de noodzakelijke eigenschappen van een bestandssynchronisatie-tool. Het enige wat het kan doen is alle genoemde bestanden kopiëren en plakken van de ene locatie naar de andere.
Een krachtiger gereedschap is Rsync dat niet alleen alle functies van scp heeft, maar nog meer functies toevoegt om bestanden op intelligente wijze te synchroniseren tussen 2 hosts. Het kan bijvoorbeeld alleen de gewijzigde bestanden controleren en uploaden, bestaande bestanden negeren, enzovoort.
Geef een antwoord