SSH und SCP · 5 min read · Nov 22, 2025

Verwendung von Secure Shell (SSH) für den Login und Secure Copy (SCP) für den Datentransfer unter Linux

SSH steht für Secure Shell. Es ist ein verschlüsseltes Protokoll für den Remote-Login. Sobald es auf jedem Knoten eingerichtet ist, kann es verwendet werden, um mit verschiedenen anderen Knoten in diesem Netzwerk zu kommunizieren.

Die Hauptvorteile von SSH sind:

  • SSH verwendet den RSA-Verschlüsselungsalgorithmus zur Generierung von öffentlichen und privaten Schlüsseln, was das Eindringen extrem schwierig macht.
  • Da SSH ein Protokoll für den Remote-Login ist, kann es auf einem Laptop konfiguriert werden. Das bedeutet, dass Sie Ihren Laptop verwenden können, um drahtlos mit dem Raspberry Pi-Cluster zu verbinden.
  • Da Protokolle wie SCP (Secure Copy) und SFTP (Secure File Transfer Protocol) auf SSH basieren, können Sie sie verwenden, um Dateien und Ordner direkt von einem Knoten zu einem anderen zu übertragen.
  • SSH unterstützt einmalige Anmeldungen. Das bedeutet, dass Sie Ihre Anmeldeinformationen nur beim ersten Mal eingeben müssen. Ab der zweiten Anmeldung ist dies nicht mehr erforderlich.

Lassen Sie uns mit der Generierung von SSH-Schlüsseln beginnen. Damit SSH verwendet werden kann, sollten die Schlüssel zwischen zwei oder mehr Knoten generiert werden, damit der Datentransfer stattfinden kann. Wir verwenden RSA zur Verschlüsselung. Beachten Sie, dass auf einem Knoten die Schlüssel generiert werden und dieser die privaten oder geheimen Schlüssel haben wird. Der gleiche Knoten wird auch einen öffentlichen Schlüssel generieren, der an andere Knoten gesendet wird, die Daten an diesen Knoten senden möchten. Führen Sie die folgenden Befehle auf dem Knoten aus, von dem Sie Daten senden möchten. Ich nenne diesen Knoten den “Master-Knoten” und die anderen Knoten “Worker-Knoten”.

cd ~  
ssh-keygen --t rsa --C "raspberrypi@raspberrypi"

Diese beiden Befehle setzen einen Standardstandort von /home/pi/_ssh/id_rsa, um den Schlüssel zu speichern.

Wenn Sie nach einer Passphrase gefragt werden, lassen Sie das Feld für die Passphrase leer. Sobald dies erledigt ist, besteht der nächste Schritt darin, die öffentlichen Schlüssel an den Worker-Knoten zu senden. Stellen Sie also sicher, dass der Worker-Knoten mit dem Netzwerk verbunden ist. Jetzt können wir die Verschlüsselungsschlüssel auf dem Worker-Knoten einrichten, sodass die verwendete IP-Adresse die IP-Adresse des Worker-Knotens ist. Führen Sie den folgenden Befehl auf dem Master-Knoten aus.

cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir .ssh;cat >> .ssh/authorized_keys"

Sobald die SSH-Schlüssel generiert sind, können wir uns bei jedem anderen Knoten anmelden, an den die Schlüssel vom Master-Knoten gesendet wurden, und dazu verwenden Sie den Befehl:

ssh [email protected]

Im obigen Befehl zeigt “pi” den Benutzer an, standardmäßig haben alle PIs, die Raspbian verwenden, den Benutzer “pi” und “192.168.3.216” ist die IP meines Clients. Sie müssen dies ändern, um die IP-Adresse Ihres Client-PI darzustellen.

Dies wird nach einem Passwort fragen. Sobald Sie sich anmelden, werden alle Befehle, die Sie eingeben, auf diesem Knoten und nicht auf dem Master ausgeführt, aber die Ausgabe wird auf dem Master selbst angezeigt. SSH kann auch verwendet werden, um Befehle direkt auf den anderen Knoten auszuführen. Zum Beispiel, um den Hostnamen verschiedener Knoten zu ändern, verwenden Sie diese Befehle in einem Format wie unten:

ssh [email protected] 'sudo echo "cilent001" | sudo nano /etc/hostname'  
ssh [email protected] 'sudo echo "cilent002" | sudo nano /etc/hostname'  
ssh [email protected] 'sudo echo "cilent003" | sudo nano /etc/hostname'

Wie oben gezeigt, können wir SSH verwenden, um Befehle auf anderen Knoten/PIs auszuführen, ohne uns tatsächlich bei ihnen anzumelden. Folgendes ist ein weiteres Beispiel, um einen Knoten im Netzwerk mit der IP-Adresse 192.168.3.216 sicher herunterzufahren:

ssh [email protected] 'sudo poweroff'

Die folgende Abbildung zeigt, wie SSH verwendet wird, um sich bei einem Worker-Knoten (192.168.3.216) anzumelden und von diesem Worker-Knoten das Steuerterminal zurück zum Master-Knoten zu erhalten.

Wie in der obigen Abbildung zu sehen ist, erfolgt die Anmeldung bei einem Worker-Knoten direkt, das heißt ohne Passworteingabe, außer beim ersten Mal. Aber jedes Mal, wenn die Kontrolle des Terminals zurück zum Master-Knoten (192.168.3.215) kommt, müssen die Anmeldeinformationen eingegeben werden. Auf diese Weise ist der Master immer vor externen Bedrohungen geschützt.

Nachdem Befehle über SSH an andere Knoten ausgegeben wurden, kann es Situationen geben, in denen Daten an mehrere Knoten gesendet werden müssen. Wenn die Anzahl der Knoten klein ist, können wir uns manuell bei jedem Knoten anmelden, ihn mit einem Display und einer Tastatur verbinden und Dateien senden. Aber dies ist eine sehr ineffiziente Methode, wenn die Größe des Clusters groß ist. Ein einfacherer Weg wäre, SCP zu verwenden, um Dateien zu senden. Installieren Sie SCP mit dem Befehl:

sudo apt-get install scp

Bitte beachten Sie, dass einige Linux-Betriebssysteme möglicherweise mit vorinstalliertem SCP geliefert werden, aber das Raspbian, das wir verwendet haben, hatte es nicht. Der allgemeine Befehl zum Senden einer einzelnen Datei lautet:

scp (Pfad der Datei auf dem lokalen Gerät) [email protected] (Pfad des Remote-Standorts)

Beispiel:

scp /pi/example.c [email protected] /pi/project

Hier wird das Remote-Gerät, an das Daten gesendet werden, durch die IP-Adresse erkannt. Viele Dateien in einem Verzeichnis können mit der rekursiven Option (-R) gesendet werden. Zum Beispiel:

scp -r /pi/project [email protected] /pi/project

Der obige Befehl überträgt rekursiv alle Dateien im /pi/project vom lokalen Host in den rekursiven Ordner im Remote-Host, der durch die IP-Adresse identifiziert wird.

Das Bild unten zeigt die verschiedenen SSH- und SCP-Befehle. Es beginnt mit der Auflistung des Inhalts seines aktuellen Ordners, ruft dann “scp” rekursiv auf, um alle Dateien im aktuellen Ordner in einen Ordner auf einem anderen Knoten zu übertragen. Es meldet sich dann bei dem anderen Knoten an und zeigt, dass das SCP erfolgreich die Inhalte an das Ziel übertragen hat.

SCP kann mit einigen anderen Optionen verwendet werden, um den Transfer an einige unserer Bedingungen anzupassen. Hier sind einige Optionen:

  • Wir können die Option “-p” verwenden, um Änderungszeiten, Zugriffszeiten und Modus vom Originaldokument zu erhalten. Beispiel:
    scp -p test.c [email protected]:~/
    Hier werden die Zugriffszeiten, Zugriffsmodi und die letzte Änderungszeit der Datei “test.c” auch im Zielknoten beibehalten.
  • SCP ermöglicht es, die Dateien zu komprimieren, bevor sie über das Netzwerk an das Ziel gesendet werden. Dies ist sehr nützlich, wenn die Datei(en) sehr groß sind, die übertragen werden sollen, und daher die Komprimierung die Geschwindigkeit erhöht, mit der sie gesendet werden. Um dies zu tun, verwenden wir die Option “-C”. Beispiel:
    scp -pC test.c [email protected]:~/
    Hier können wir sehen, dass mehrere Optionen verwendet werden können und beide Funktionen auf den Befehl angewendet werden.
  • Socket-Programmierung umfasst das Senden und Empfangen von Daten über Ports, und SCP kann verwendet werden, um Daten über spezifische Ports an den Remote-Host zu senden. Dies kann mit der Option “-P” erfolgen. Beispiel:
    scp -P 21938 test.c [email protected]:~/
    Hier wird der Port, der zum Senden von Daten verwendet wird, 1938 sein.
  • Es kann Fälle geben, in denen Sie den Status des Dateiübertrags nicht wissen möchten, wie im obigen Bild. Es macht Sinn, den Übertragungsstatus auszuschalten, wenn eine große Anzahl von Dateien vorhanden ist. Wir können dies tun, indem wir die Option “-q” verwenden. Beispiel:
scp -rq ~/files [email protected]:~/files

Hier werden die Inhalte des Ordners mit dem Namen files in den Ordner files auf einem anderen Knoten übertragen, aber die Statusleiste und Debugging-Nachrichten sind alle deaktiviert, das heißt, sie werden nicht angezeigt.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.