Das SSH-Protokoll (Secure Shell) ist ein Netzwerkprotokoll für die Remote-Kommandozeilenverwaltung von Betriebssystemen und gilt weithin als Standard für den Fernzugriff auf *nix-Systeme. Es ermöglicht eine sichere Anmeldung auf einem Server, das Ausführen von Befehlen aus der Ferne, die Verwaltung von Dateien (Erstellen, Löschen, Kopieren usw.) und vieles mehr. Die meisten Cloud- und Hosting-Anbieter verlangen SSH, um auf ihre Dienste zuzugreifen. In diesem Artikel zeigen wir, wie man Dateien über SSH sowohl unter Windows als auch unter Linux kopiert.
SSH kann beliebige Daten (Audio, Video, Anwendungsprotokolldaten) sicher über einen verschlüsselten Kommunikationskanal übertragen. Im Gegensatz zu veralteten und unsicheren Protokollen wie Telnet und rlogin gewährleistet SSH Vertraulichkeit und Authentizität der Daten – ein entscheidender Faktor für die Kommunikation über das Internet.
So wird eine sichere Verbindung zwischen Client und Server hergestellt:
TCP-Verbindungsaufbau: Standardmäßig lauscht der Server auf Port 22. Beide Seiten teilen eine Liste unterstützter Algorithmen (Kompression, Verschlüsselung, Schlüsselaustausch) und einigen sich auf die zu verwendenden.
Authentifizierung: Um Identitätsdiebstahl zu verhindern, überprüfen beide Seiten ihre Identitäten mittels asymmetrischer Verschlüsselung (öffentliche/private Schlüsselpaare). Zuerst wird der Server authentifiziert. Beim ersten Verbindungsaufbau zeigt der Client eine Warnung mit Serverdetails an. Vertrauenswürdige Server-Schlüssel werden in /home/<username>/.ssh/known_hosts
.
Schlüsselgenerierung: Sobald der Server verifiziert ist, generieren beide Seiten einen symmetrischen Schlüssel, um den gesamten Datenaustausch zu verschlüsseln.
Benutzerauthentifizierung: Dies geschieht entweder mit einem Passwort oder mit einem vom Client gesendeten öffentlichen Schlüssel, der auf dem Server in /home/<username>/.ssh/authorized_keys
gespeichert ist.
Die beliebteste Implementierung unter Linux ist OpenSSH, das auf den meisten Distributionen (Ubuntu, Debian, RHEL-basiert usw.) vorinstalliert ist. Unter Windows werden Clients wie PuTTY oder MobaXterm verwendet. Seit Windows 10 und Server 2019 sind OpenSSH-Tools auch nativ verfügbar.
Zwei Hauptprogramme zum Kopieren von Dateien über SSH unter Linux sind scp und sftp. Beide sind Teil von OpenSSH.
SSH unterstützt zwei Protokollversionen: 1 und 2. OpenSSH unterstützt beide, Version 1 wird jedoch kaum noch verwendet.
Um Tab-basierte Autovervollständigung bei der Verwendung von scp zu aktivieren, richte eine Public-Key-Authentifizierung ein:
Schlüsselpaar generieren:
ssh-keygen
Die Ausgabe sieht etwa so aus:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Standardmäßig werden deine Schlüssel (id_rsa für den privaten und id_rsa.pub für den öffentlichen) in ~/.ssh/ gespeichert.
Öffentlichen Schlüssel auf die Remote-Maschine kopieren:
ssh-copy-id [username]@[ip-address]
Nach Eingabe des Benutzerpassworts erscheint eine Meldung, die bestätigt, dass der Schlüssel hinzugefügt wurde.
Für kleine Datenübertragungen (z. B. Dienstkonfigurationen) ist scp ideal.
Von lokal zu Remote kopieren:
scp test.txt user@192.168.1.29:/home/user/
Mehrere Dateien kopieren:
scp test1.txt test2.txt user@192.168.1.29:/home/user/
Von Remote zu lokal kopieren:
scp user@192.168.1.29:/home/user/test.txt ~/
Verzeichnisse kopieren:
scp -r testdir user@192.168.1.29:/home/user/
Remote-zu-Remote kopieren:
scp gendo@192.168.1.25:/home/gendo/test.txt user@192.168.1.29:/home/user/
SFTP ist ein weiteres Dienstprogramm, das in OpenSSH enthalten ist. Seit OpenSSH 9.0 verwendet scp standardmäßig SFTP anstelle des alten SCP/RCP-Protokolls.
Im Gegensatz zu klassischem FTP überträgt sftp Daten verschlüsselt über einen sicheren Tunnel. Es ist kein separater FTP-Server erforderlich.
Beispielverwendung:
sftp misato@192.168.1.29
sftp> ls
sftp> lcd testdir/
sftp> get test.txt
sftp> bye
Grafische Dateimanager wie Midnight Commander und Nautilus verwenden ebenfalls sftp. In Nautilus erscheint der Remote-Server wie ein lokaler Ordner, z. B. user@ip.
Unter Windows wird das Befehlszeilentool pscp aus PuTTY verwendet, um Dateien zu kopieren.
Datei auf den Server kopieren:
pscp C:\server\test.txt misato@192.168.1.29:/home/misato/
Datei vom Server kopieren:
pscp misato@192.168.1.29:/home/misato/test.txt C:\file.txt
Dateien auf dem Remote-Server auflisten:
pscp -ls user@192.168.1.29:/home/misato
Anführungszeichen für Pfade mit Leerzeichen verwenden:
pscp "C:\dir\bad file name.txt" misato@192.168.1.29:/home/misato/
Hilfe anzeigen:
pscp
In diesem Artikel haben wir gezeigt, wie man Dateien mithilfe des sicheren SSH-Protokolls zu und von einem Server kopiert. Wenn du mit Cloud-Servern arbeitest, ist das Verständnis von SSH unerlässlich — es ist der Standard für den Fernzugriff auf *nix-Maschinen und ein wichtiger Bestandteil des täglichen DevOps- und Systemadministrations-Workflows.