Der Befehl SCP
Mit dem Befehl SCP (Secure Copy) ist es möglich, auf UNIX- bzw. Linux- Betriebssystemen Dateien über eine sichere, verschlüsselte Netzwerkverbindung zu kopieren. Dazu greift SCP für den Dateitransfer, sowie die Authentifizierung auf das SSH-Protokoll zurück.
In diesem Beitrag lernen Sie die Grundlagen zu Verwendung des Befehls SCP kennen.
Installation openssh-server
Vor der Verwendung von scp ist es notwendig, das Paket openssh-server auf der Remote-Maschine zu installieren. Verwenden Sie dazu den folgenden Befehl:
apt-get install openssh-server
Nach Abschluss der Paketinstallation können Sie den Status des SSH-Daemon überprüfen. Dieser wird nach Abschluss der Installation automatisch gestartet:
systemctl status ssh
Die Ausgabe sollte folgendermaßen aussehen:
Kopieren von Dateien
Der Befehl scp ähnelt stark dem Befehl cp, welcher für das lokale Kopieren von Dateien und Verzeichnissen verwendet wird. Die Syntax für das Kopieren von Dateien zwischen Ihrem lokalen Rechner und einem Host mit scp ist daher grundsätzlich auch sehr ähnlich:
scp [Optionen] [Pfad Quelle] [Pfad Ziel]
Lokale Pfade können, wie üblich, explizit in relativer oder absoluter Form angegeben werden. Lediglich bei Pfadangaben von Remote-Maschinen gibt es einige Besonderheiten zu beachten:
Beim Kopieren von oder auf einen Host wird der Hostname mit einem Doppelpunkt ':' getrennt links an den Dateipfad angehängt. Optional ist es außerdem möglich, einen Benutzer zu spezifizieren: Dazu hängen Sie den Benutzernamen zusätzlich und mit einem '@' getrennt links neben den Hostnamen an. Die Syntax lautet dann folgendermaßen:
scp [Optionen] [Benutzer]@[Host 1]:[Pfad] [Benutzer]@[Host 2]:[Pfad]
Hier ist auch zu erkennen, dass auch das Kopieren zwischen zwei Hosts möglich ist.
Beispiel: Kopieren von Lokal auf Host
In diesem Beispiel soll die Datei "befehl-scp.txt" von dem lokalen Rechner auf den Host "192.168.2.116" kopiert werden. Der auf dem Host verwendete Benutzer ist "hellberg".
Eingabe:
scp /home/hellberg/befehl-scp.txt hellberg@192.168.2.116:/home/hellberg/profi-tutorials/linux/netzwerke/
Ausgabe:
Zielverzeichnis des Host (ls -l /home/hellberg/profi-tutorials/linux/netzwerke/):
Beispiel: Kopieren von Host auf Lokal
Hier soll die Datei "netzwerkbefehle-anfaenger.txt" aus dem Verzeichnis "/home/hellberg/profi-tutorials/linux/netzwerke/" von dem Host "192.168.2.116" auf den lokalen Rechner in das Verzeichnis "/home/hellberg/" kopiert werden. Der auf dem Host verwendete Benutzer ist "hellberg".
Eingabe:
scp hellberg@192.168.2.116:/home/hellberg/profi-tutorials/linux/netzwerke/netzwerkbefehle-anfaenger.txt /home/hellberg/
Ausgabe:
Lokales Zielverzeichnis (ls -l /home/hellberg/):
Wichtige Optionen
Im Folgenden werden einige wichtige Optionen für den SCP-Befehl vorgestellt.
-3 - Kopieren zwischen zwei Hosts über den lokalen Rechner
Kopien zwischen zwei Remote-Maschinen bzw. Hosts werden standardmäßig direkt zwischen ihnen abgewickelt. Die Option -3 bewirkt, dass der Kopiervorgang über den lokalen Rechner stattfindet, dieser also als Zwischenstation dient.
scp -3 [Benutzer]@[Host 1]:[Pfad] [Benutzer]@[Host 2]:[Pfad]
Das Aktivieren dieser Option führt zur Deaktivierung der Fortschrittsanzeige.
-l - Bandbreite limitieren
Teilweise ist es hilfreich, die maximal von dem Kopiervorgang verwendbare Bandbreite zu limitieren. Dies ist über die Option -l möglich. Die Bandbreite wird dabei in Kbit/s angegeben:
scp -l [Benutzer]@[Host 1]:[Pfad] [Benutzer]@[Host 2]:[Pfad]
Beispiel: Bandbreite limitieren
Hier soll der wieder die Datei "befehl-scp.txt" aus dem Verzeichnis "/home/hellberg/" des lokalen Rechner in das Verzeichnis "/home/hellberg/profi-tutorials/linux/netzwerke/" des Host "192.168.2.116" kopiert werden. Die Bandbreite wird dabei mit der Option -l 30 auf 30KBit/s limitiert. Der auf dem Host verwendete Benutzer ist wieder "hellberg".
Eingabe:
scp -l 30 /home/hellberg/befehl-scp.txt hellberg@192.168.2.116:/home/hellberg/profi-tutorials/linux/netzwerke/
Ausgabe (Vor Abschluss):
Der Kopiervorgang benötigt aufgrund der limitierten Bandbreite nun eine etwas längere Zeit. Es wird eine ETA (Estimated Time for Achievement) angezeigt, also die geschätzte Zeit bis zur Vollendung des Vorgangs. In diesem Fall ist diese noch nicht bestimmt worden.
Ausgabe (Nach Abschluss):
Nach 8 Sekunden ist der Kopiervorgang schließlich abgeschlossen.
-P - Port spezifizieren
Standardmäßig wird für SSH bzw. SCP der Port 22 verwendet. Mit der Option -P haben Sie jedoch auch die Möglichkeit, einen anderen Port für die Verbindung zu verwenden:
scp -P [Portnummer] [Benutzer]@[Host 1]:[Pfad] [Benutzer]@[Host 2]:[Pfad]
-r - Rekursives Kopieren ganzer Verzeichnisse
Wenn Sie rekursiv ganze Verzeichnisse kopieren wollen, dann müssen Sie dazu die Option -r verwenden:
scp -r [Benutzer]@[Host 1]:[Pfad] [Benutzer]@[Host 2]:[Pfad]
Beispiel: Rekursives Kopieren von Host auf Lokal
Hier soll der gesamte Inhalt des Verzeichnisses "/home/hellberg/profi-tutorials/linux/" von dem Host "192.168.2.116" auf den lokalen Rechner in das Verzeichnis "/home/hellberg/" kopiert werden. Der auf dem Host verwendete Benutzer ist "hellberg".
Eingabe:
scp -r hellberg@192.168.2.116:/home/hellberg/profi-tutorials/linux/ /home/hellberg/
Ausgabe:
-v - Debugging Nachrichten ausgeben
Die Option -v aktiviert die Ausgabe von Debugging Nachrichten von ssh und scp, welche bei der Fehlerbehebung der Verbindung, Authentifizierung und Konfiguration hilfreich sein können.
scp -v [Benutzer]@[Host 1]:[Pfad] [Benutzer]@[Host 2]:[Pfad]
Abonniere JETZT unseren Newsletter!
Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!