Kennisbank › Ssh › Hoe scp werkt
ssh starter 08 September 2026

Hoe scp werkt

`scp gebruiker@server:/pad/naar/bestand /lokale/doelmap` — dat is het volledige commando. Geen wizard, geen GUI, geen poort die u moet onthouden. SSH verzorgt de rest.

`scp gebruiker@server:/pad/naar/bestand /lokale/doelmap` — dat is de hele opdracht. Geen wizard, geen GUI, geen poort die u moet onthouden. SSH doet de authenticatie en de versleuteling, scp doet alleen het kopiëren.

Dit artikel legt uit hoe scp werkt, welke opties u in de praktijk nodig hebt en waarom het ondanks zijn leeftijd nog steeds de snelste manier is om één bestand van A naar B te krijgen.

Vereisten

  • OpenSSH-client, versie 9.0 of nieuwer. Bijna elke Linux-distributie levert dit standaard mee.
  • SSH-toegang tot de doelmachine. Dat betekent: een account, een wachtwoord of SSH-sleutel, en een draaiende `sshd`-service op de server.
  • Een netwerkpad tussen de twee machines. Firewalls mogen poort 22 (of een aangepaste SSH-poort) niet blokkeren.
Controleer of scp beschikbaar is:

scp -V

Dit toont de OpenSSH-versie. Ontbreekt het commando, installeer dan `openssh-client` via uw package manager:

sudo apt install openssh-client

Hoe scp werkt

scp is geen zelfstandig protocol. Het is een dun laagje bovenop SSH dat het oude BSD RCP-commando nadoet, maar dan met encryptie. Wanneer u een scp-opdracht geeft, zet scp een SSH-sessie op naar de doelmachine en start daar een `scp`-proces. Dat proces leest het bestand en stuurt het versleuteld terug door de SSH-tunnel.

Dit betekent twee dingen. Ten eerste: alles wat SSH kan — sleutels, agent forwarding, alternatieve poorten — werkt ook met scp. Ten tweede: scp erft ook de beperkingen van SSH. Wilt u een bestand kopiëren naar een machine waar u niet kunt inloggen, dan lukt dat niet. En dat is precies de bedoeling.

Basisgebruik

De syntaxis lijkt op die van `cp`, met één verschil: een van de paden bevat een hostnaam.

Lokaal bestand naar een server kopiëren:

scp /pad/naar/lokaal/bestand.txt gebruiker@server:/pad/naar/doel/

Bestand van een server naar uw lokale machine halen:

scp gebruiker@server:/pad/naar/bestand.txt /pad/naar/lokaal/doel/

In beide gevallen vraagt scp om het wachtwoord van `gebruiker` op `server`, tenzij u een SSH-sleutel hebt geconfigureerd. De volgorde van bron en doel is hetzelfde als bij `cp`: eerst wat u kopieert, dan waar u het naartoe kopieert.

De opties die u echt gebruikt

De manpage van scp noemt tientallen opties. In de praktijk komt u met vijf ver.

Recursief kopiëren met `-r`:

scp -r /pad/naar/map gebruiker@server:/pad/naar/doel/

Zonder `-r` weigert scp een directory te kopiëren. Het is de optie die u het vaakst vergeet en de foutmelding die u dan krijgt is niet mis te verstaan: `Not a regular file`.

Alternatieve SSH-poort met `-P`:

scp -P 2222 /pad/naar/bestand.txt gebruiker@server:/pad/naar/doel/

Staat uw SSH-server op een andere poort dan 22, dan moet scp dat weten. Let op de hoofdletter. De kleine `-p` doet iets anders: die behoudt de modificatietijd van het bestand.

Specifiek sleutelbestand met `-i`:

scp -i /pad/naar/sleutel.pem /pad/naar/bestand.txt gebruiker@server:/pad/naar/doel/

Handig als u voor verschillende servers verschillende sleutels gebruikt, zoals bij cloudproviders gebruikelijk is.

Twee externe hosts verbinden met `-3`:

scp -3 gebruiker@server1:/pad/naar/bestand.txt gebruiker@server2:/pad/naar/doel/

Zonder `-3` probeert scp een directe verbinding tussen server1 en server2 op te zetten. Dat vereist dat beide servers elkaars SSH-poorten kunnen bereiken en dat u op allebei kunt inloggen. Met `-3` stuurt uw lokale machine de data door. Dat is langzamer, maar het werkt ook als de twee servers elkaar niet kunnen zien.

Compressie met `-C`:

scp -C /pad/naar/groot-bestand.sql gebruiker@server:/pad/naar/doel/

Compressie helpt bij tekstbestanden en logbestanden over een trage verbinding. Bij al gecomprimeerde bestanden zoals `.zip` of `.jpg` voegt het niets toe en kost het alleen CPU-tijd.

Waarom scp nog bestaat

Er zijn inmiddels betere tools. `rsync` is efficiënter bij het synchroniseren van mappen omdat het alleen de gewijzigde delen van bestanden overdraagt. SFTP biedt interactief bestandsbeheer en kan onderbroken overdrachten hervatten. Voor complexe workflows zijn die alternatieven de betere keuze.

Maar voor één simpel feit blijft scp onaantrekkelijk: het is er al. Het zit in OpenSSH, dus op elke Linux-server die u ooit aanraakt. Geen extra package, geen daemon die u moet configureren, geen syntax die verschilt tussen versies. In een script dat een backup naar een andere server moet duwen, is scp de regel die u in tien seconden schrijft en nooit meer aanraakt.

Dat heeft ook een keerzijde. scp is verouderd — de OpenSSH-ontwikkelaars hebben het protocol in versie 9.0 gemarkeerd als deprecated, wat betekent dat het op termijn vervangen wordt door SFTP. In OpenSSH 9.0 en nieuwer gebruikt scp standaard het SFTP-protocol voor de overdracht, ook al heet het commando nog steeds scp. De vlaggen en de syntax blijven werken, maar onder de motorkap rijdt er een ander protocol.

Stappenplan: bestand kopiëren met een SSH-sleutel

De meest robuuste manier om scp te gebruiken is met een SSH-sleutel in plaats van een wachtwoord. Dat werkt ook in scripts, zonder dat iemand een wachtwoord typt.

Stap 1: Genereer een sleutelpaar op uw lokale machine

ssh-keygen -t ed25519 -a 100

De optie `-t ed25519` kiest het moderne Ed25519-algoritme, `-a 100` verhoogt het aantal KDF-rondes voor de passphrase. Het resultaat staat in `~/.ssh/id_ed25519` (privé) en `~/.ssh/id_ed25519.pub` (publiek).

Stap 2: Kopieer de publieke sleutel naar de server

ssh-copy-id gebruiker@server

Dit commando voegt uw publieke sleutel toe aan `~/.ssh/authorized_keys` op de server. U moet één keer uw wachtwoord invoeren.

Stap 3: Test de sleutel

ssh gebruiker@server 'echo gelukt'

Als dit zonder wachtwoordvraag werkt, werkt scp ook zonder wachtwoordvraag.

Stap 4: Kopieer het bestand

scp /pad/naar/bestand.txt gebruiker@server:/pad/naar/doel/

Geen prompt, geen vertraging. De overdracht start direct.

Stap 5: Stel een passphrase in op uw sleutel

ssh-keygen -p -f ~/.ssh/id_ed25519

Een sleutel zonder passphrase is een beveiligingsrisico: wie uw laptop bemachtigt, kan bij al uw servers. Met een passphrase is de sleutel versleuteld op schijf. U typt de passphrase één keer per sessie; `ssh-agent` onthoudt hem daarna.

Verificatie

Controleer of het bestand daadwerkelijk op de doelmachine staat:

ssh gebruiker@server 'ls -l /pad/naar/doel/bestand.txt'

Vergelijk de bestandsgrootte met het origineel op uw lokale machine:

ls -l /pad/naar/bestand.txt

Zijn de groottes gelijk, dan is de overdracht geslaagd. Voor extra zekerheid kunt u een checksum berekenen op beide machines:

sha256sum /pad/naar/bestand.txt
ssh gebruiker@server 'sha256sum /pad/naar/doel/bestand.txt'

De twee hashes moeten identiek zijn.

Veelgemaakte fouten

`Permission denied (publickey)`

De server accepteert uw sleutel niet. Controleer of de publieke sleutel in `~/.ssh/authorized_keys` op de server staat en of de permissies kloppen: `~/.ssh` moet `700` zijn, `authorized_keys` moet `600` zijn.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

`Connection refused`

De SSH-server draait niet of luistert op een andere poort. Test met `ssh -p 2222 gebruiker@server` of u überhaupt kunt verbinden. Werkt SSH wel, vergeet dan niet de `-P`-optie bij scp te gebruiken.

`scp: /pad/naar/doel/: No such file or directory`

De doelmap bestaat niet. scp maakt geen mappen aan; dat moet u zelf doen:

ssh gebruiker@server 'mkdir -p /pad/naar/doel/'

`Executable path ... is not allowed by default`

U gebruikt een oudere OpenSSH-versie op de server die het SFTP-protocol niet toestaat voor scp. Update de server naar OpenSSH 9.0 of nieuwer, of forceer het oude protocol met:

scp -O /pad/naar/bestand.txt gebruiker@server:/pad/naar/doel/

De `-O`-optie gebruikt het klassieke scp-protocol. Die werkt overal, maar is precies de modus die de OpenSSH-ontwikkelaars willen afschaffen.

De eenvoud van scp is tegelijk zijn zwakte: het kan niets anders dan kopiëren. Geen synchronisatie, geen resume, geen directory-listing. Voor die taken bestaat rsync, en het is de moeite waard om dat te leren voor uw volgende project. Maar voor de momenten dat u snel één bestand wilt verplaatsen — een config, een backup, een deployment-artefact — is scp nog steeds het gereedschap dat u als eerste pakt. Het zal nog jaren werken, ook al staat er op de doos 'deprecated'.

← Terug naar kennisbank
← Terug naar kennisbank