Dateien per SSH auf den Raspberry Pi übertragen: Per Windows im Explorer und unter Linux

Als Video ansehen
Bereitgestellt über YouTube

Dateien per SSH auf den Raspberry Pi übertragen: Per Windows im Explorer und unter Linux

Wenn auf eurem Raspberry Pi keine grafische Desktopumgebung installiert ist, weil er z.B. als Server genutzt wird, möchtet ihr wahrscheinlich früher oder später Dateien zwischen eurem PC/Laptop und dem Pi übertragen. Beispielsweise um an Programmen oder Skripten zu arbeiten. Ich zeige euch im Folgenden, wie ihr per SSH bequem auf eure Dateien zugreifen könnt!

Der große Vorteil von SSH: Man hat es meist sowieso aktiv, da es die Standard-Schnittstelle zur Administration von Linux-Systemen aus der Ferne ist. Zudem ist SSH durch seine Verschlüsselung sicher. Somit muss keine gesonderte Software installiert werden, die eventuell sogar unverschlüsselt arbeitet, wie beispielsweise FTP. Voraussetzung ist demnach aber, dass SSH aktiviert ist – entweder per Vorkonfiguration, beispielsweise mit dem Raspberry Pi Imager, oder nachträglich in der Raspberry Pi Konfiguration.

Über Windows auf die Daten des Raspberry Pi zugreifen

Beginnen wir mit Windows: Hier habe ich zwei verschiedene Wege für euch. In beiden Fällen wird allerdings extra Software aus Drittanbieter-Quellen benötigt, da Microsoft sich bis heute weigert, SSH in den Windows Explorer zu integrieren.

Variante 1: Einzelne Dateien über MobaXterm bearbeiten

Der erste funktioniert über Programme wie beispielsweise MobaXterm, die euch das Ändern und Übertragen von Dateien per SSH ermöglichen. Das habe ich im Video zum Bearbeiten von Dateien als einen Weg gezeigt: Ihr könnt Dateien bearbeiten, herunterladen und hochladen. Entweder über die Knöpfe oder per Drag & Drop hinein ziehen.

Gerade beim Bearbeiten von Dateien hat dies aber Schwächen: Man kann nur einzelne Dateien öffnen, nicht ganze Ordner. Außerdem dauert es nach jeder Änderung ein paar Sekunden, bis die neue Datei auf den Pi geladen wurde. Für einzelne wenige Änderungen mag das ausreichen. Doch wer beispielsweise auf dem Pi Programmieren möchte, wird das spätestens bei etwas komplexeren Projekten nerven.

Variante 2: Den Raspberry Pi im Windows Explorer einbinden

Wesentlich komfortabler ist es, den kompletten Raspberry Pi im Windows Explorer als eine Art Netzlaufwerk einzubinden. Dies funktioniert über SFTP Drive: Das Programm ist zur privaten Nutzung kostenfrei. Die wichtigste Einschränkung ist, dass man sich nur mit einem Pi bzw. Linux-Server parallel verbinden kann. Wen das stört, der kann eine Lizenz für 39 US-Dollar kaufen – je nach Kurs entspricht das derzeit ungefähr 33 Euro. Wer nur einen Pi hat bzw. damit leben kann, dass er sich nur nacheinander statt parallel mit seinen Pis verbinden kann, dem reicht die kostenfreie Version auch. Diese bekommt man unter der Bezeichnung Personal Edition auf der Homepage des Herstellers. Einfach oben bei der Personal-Edition auf Free Download klicken.

Leider möchte der Hersteller eine E-Mail Adresse für den Download. Allerdings wird die Adresse nicht geprüft. Ich habe für solche Zwecke eine Spam-Adresse, die könnt ihr eben so verwenden wie z.B. Einweg-Adressen. Die restlichen Felder sind optional, nach Eingabe einer E-Mail startet der Download. Während der Installation muss man erneut einen Namen und eine E-Mail eingeben, hier das gleiche Spiel. Am besten unten den Haken für den Newsletter entfernen. Ansonsten kann man den Installationsassistenten durchklicken und die Software mit einem Klick auf Finish starten.

Im Programmfenster müssen wir einmalig eine Verbindung zu unserem Pi durch den Klick auf New (1) anlegen. Ich empfehle euch, einen festen Laufwerksbuchstabe (2) festzulegen – hier etwa P für Pi. Das erleichtert euch das Arbeiten, wenn ihr z.B. einen Texteditor oder eine Entwicklungsumgebung nutzt. Welchen ihr nehmt ist egal. Direkt daneben lässt sich eine Beschriftung (3) angeben. Sie erscheint im Explorer und hilft bei der Zuordnung. Unter (4) folgt der Hostname oder die IP-Adresse eures Raspberry Pi. Darunter gegebenfalls der Port. Sofern ihr diesen nicht geändert habt, muss der Standardport 22 nicht geändert werden. In (5) und (6) folgen Nutzername/Passwort, standardmäßig heißt der Nutzername pi und das Passwort raspberrypi – wobei ihr das Kennwort ändern solltet. Noch besser wäre natürlich, wenn ihr SSH-Keys nutzt. In diesem Falle genügt der Nutzername, man würde oben Authentication Type entsprechend ändern und den privaten Schlüssel unter dem Passwortfeld angeben.

Unten (7) kann man auswählen, welches Verzeichnis das Wurzelverzeichnis darstellen soll. Der hier ausgewählte Ordner öffnet sich, wenn man das Netzlaufwerk im Explorer öffnet. Server root ist am flexibelsten, so habt ihr theoretisch auf alles Zugriff, sofern die Rechte stimmen. Optional kann man ganz unten noch den Haken herausnehmen, wenn ihr nicht möchtet, dass sich der Ordner im Explorer beim Aufbau der Verbindung öffnet.

Schlussendlich unter (8) die Verbindung testen. Dies sollte kurz darauf mit einer Erfolgsmeldung quittiert werden:

Beim ersten Verbindungsversuch erscheint der SSH-Fingerabdruck, der bestätigt werden muss, um die Verbindung aufzubauen. Dies ist ein Verfahren des SSH-Protokolles, um zu verifizieren, ob der Ziel-Host wirklich jener ist, den man erwartet.

Nachdem ihr zweimal mit OK bestätigt, bietet euch das Tool an, direkt eine Verbindung aufzubauen. Hier mit Ja bestätigen:

Anschließend sollte sich der Explorer öffnen. Ihr findet im Windows Explorer nun das Laufwerk mit dem zuvor festlegten Laufwerksbuchstabe, hier P:

Darin ist nun das zuvor ausgewählte Wurzelverzeichnis zu finden. Habt ihr Server root ausgewählt, befinden sich darin alle Verzeichnisse von / des Raspberry Pi OS:

Dort kann man nun etwa über P:/home/pi das Heimverzeichnis des Pi-Benutzers öffnen. Oder in P:/var/www/html Dateien und Skripte zur Auslieferung auf dem Webserver ändern. Die großen Vorteile sind: Man kann einen gesamten Ordner mit dem Texteditor oder der Entwicklungsumgebung auf dem lokalen PC öffnen. Beispielsweise den gesamten html Ordner des Webservers mit Visual Studio Code:

Änderungen werden sofort auf den Pi geschrieben, da es keine Verzögerung durch das Hochladen gibt wie bei MobaXterm. Voraussetzung ist natürlich, dass die Berechtigungen richtig eingerichtet sind und euer pi-Benutzer entweder Eigentümer ist oder Mitglied in einer Eigentümergruppe. Wie dies funktioniert, habe ich in einem vorherigen Beitrag erklärt, du findest ihn hier.

Damit die Verbindung nach einem Neustart des PCs hergestellt wird, einfach SFTP Drive starten – etwa über das Startmenü. Anschließend oben auf Start klicken.

Im Programmfenster könnt ihr mehrere Pis hinzufügen. Damit diese verbunden werden, müssen sie rechts auf enabled stehen. Hier zeigt sich aber die zuvor erwähnte Limitierung: Nach dem Klick auf Start oder Restart erscheint eine Fehlermeldung:

Damit der Start funktioniert, muss man alle bis auf einen Host deaktivieren.

Möglich ist nur ein Wechsel: Ihr verbindet euch zu Host1, trennt die Verbindung, deaktiviert diesen und anschließend zu Host2. Parallel ist allerdings nicht möglich.

Abgesehen davon ist das Programm leider nicht quelloffen. Mit diesen zwei Nachteilen muss man als Kompromiss leben. Ich habe leider bisher keine halbwegs aktuelle und gewartete Software gefunden, die diese Einschränkungen nicht aufweist. Ansonsten funktioniert SFTP Drive wunderbar mit einem einzelnen Host. Falls ihr Alternativen kennt, schreibt es gerne in die Kommentare.

Raspberry Pi Dateisystem unter Linux mounten

Einfacher und ohne Einschränkungen funktioniert es, wenn wir den Raspberry Pi per SSH auf einer Linux-Maschine mounten. Dazu müssen wir lediglich ein Paket nachinstallieren. Unter Debian/Ubuntu etwa mit apt:

sudo apt update
sudo apt install sshfs

Legt anschließend einen Mountpunkt an, über den ihr euren Pi zukünftig erreichen möchtet:

mkdir ~/testpi

Anschließend nur noch mit sshfs die Verbindung herstellen, den Fingerabdruck bestätigen und Anmelden.

$ sshfs pi@testpi:/ ~/testpi
The authenticity of host 'testpi (2001:16b8:24fd:b00:8b09:906:80eb:b3fa)' can't be established.
ECDSA key fingerprint is SHA256:j4/nA68gN2DGaeYyJJblGGOU9wVOfkhnYhgAk37jwZs.
Are you sure you want to continue connecting (yes/no)? yes
pi@testpi's password:

Nun haben wir Zugriff auf das Wurzel-Verzeichnis / des Pi über unseren lokalen Einhängepunkt ~/testpi. Natürlich könnten wir auch einen speziellen Pfad mounten, etwa beispielsweise mit sshfs pi@testpi:/var/www/html ~/testpi für das vom Apache2 Webserver ausgelieferte Verzeichnis.

Optional: Automatisch beim Start des Systemes verbinden

Über die /etc/fstab können wir die Verbindung problemlos ohne zusätzliche Software beim Start des Linux-Computers aufbauen lassen, indem wir zur angegebenen Datei folgende Zeile hinzufügen:

pi@testpi:/  /home/myuser/testpi  fuse.sshfs  defaults  0  0

Hierfür muss die Authentifizierung per SSH-Key durchgeführt werden! Das heißt: Es muss auf der Linux-Workstation einer existieren (mit ssh-keygen generieren) und der öffentliche Schlüssel muss auf dem Pi liegen:

ssh-keygen pi@testpi

Leave a Reply