#!/coding/blatt
Sammelsurium mit Schwerpunkten Linux & IT-Sicherheit

Android: Dateisystem per SSHFS einbinden

Mit SSHFS gibt es eine einfache und sichere Möglichkeit, das Dateisystem eines entfernten Geräts per SSH ins eigene Dateisystem einzubinden. Auf dem entfernten Gerät bedarf es dafür einen SSH-Server mit SFTP-Funktion.

Auf diese Weise lässt sich bspw. auch das Dateisystem eines Android-Smartphones in das Dateisystem des eigenen Rechners einbinden. Die Dateien des Android-Geräts können dann komfortabel per Dateibrowser verwaltet werden.

Analog zum letzten Beitrag bzgl. Android mit SSH-Server verbinden verwende ich hierfür auch dieses mal wieder die Open-Source-App Termux.

Folgende Software wurde verwendet:
  • Ubuntu v20.04 LTS
  • OpenSSH v8.2p1 Ubuntu-4ubuntu0.2, OpenSSL 1.1.1f 31 Mar 2020 (unter Ubuntu)
  • OpenSSH v8.6p1, OpenSSL 1.1.1k 31 Mar 2021 (unter LineageOS)
  • SSHFS v2.10.0
  • LineageOS v18.1
  • Termux v0.113 (F-Droid-Version)

Voraussetzungen & Ausgangslage

Mein Ziel war es das Dateisystem meines Android-Smartphones in das Dateisystem meines Rechners über eine SSH-Verbindung einzubinden. Auf meinem Android-Smartphone muss dafür ein SSH-Server mit aktiviertem SFTP laufen. Hierfür verwende ich die App Termux und das Termux-Paket openssh.

Hinweis Termux und Paketmanagement

Bei Termux handelt es sich um einen Terminal-Emulator. Termux verfügt wie andere Linux-Distributionen über ein eigenes Paket-Repository. Die Pakete werden durch die Termux-Entwickler gebaut und signiert (Details siehe Termux-Wiki: Package Management).

Auf meinem Rechner benötige ich nur SSHFS.

Für den weiteren Verlauf des Beitrags setze ich voraus, dass der Rechner das entsprechende Android-Gerät über das Netzwerk erreichen kann. Zudem solltet die Termux-App auf dem Android-Gerät installiert sein.

Android - Termux und SSH-Server einrichten

Startet Termux und stellt sicher, dass alle Pakete aktuell sind:

pkg upgrade
Terminal / Konsole

SSH-Server installieren & einrichten

Als nächstes wird das openssh-Paket installiert:

pkg install openssh
Terminal / Konsole

Das Paket stellt sowohl einen SSH-Client als auch Server zur Verfügung.

Standardmäßig würde der SSH-Server auf 0.0.0.0:8020 lauschen. Für meinen Anwendungsfall nehme ich eine Anpassung vor, so dass der Server auf 192.168.10.123:9090 lauscht. Die IP entspricht dabei der festen IP meines Smartphones innerhalb meines Heimnetzwerks. Außerdem soll die Anmeldung nur per Public-Key-Authentifizierung und nicht per Passwort möglich sein.

Um den SSH-Server entsprechend zu konfigurieren, ist die Konfigurationsdatei $PREFIX/etc/ssh/sshd_config anzupassen. Bei mir sieht die z.B. wie folgt aus:

ListenAddress 192.168.10.123:9090
PrintMotd yes
PasswordAuthentication no
Subsystem sftp /data/data/com.termux/files/usr/libexec/sftp-server
Datei: $PREFIX/etc/ssh/sshd_config
Hinweis Termux und $PREFIX

Bei $PREFIX handelt es sich um eine spezielle Termux-Umgebungsvariable.
Details siehe Termux-Wiki: How does it work

Damit eine Anmeldung per SSH-Schlüssel/Key möglich ist, müsst ihr euren öffentlichen SSH-Key unter ~/.ssh/authorized_keys eintragen. Alternativ könnt ihr temporär die Anmeldung per Passwort erlauben und auf eurem Rechner per SSH-Befehl ssh-copy-id euren SSH-Key übertragen und danach die Passwort-Anmeldung wieder deaktivieren.

Termux - Zugriff auf Dateien erlauben

Standardmäßig hat Termux keine Berechtigung zum Zugriff auf den Android-Speicher. Ihr müsst der Termux-App somit erst die Berechtigung dafür geben. Unter Lineage 18.1 könnt ihr das in den Einstellungen unter Apps & Benachrichtigen - Erweitert - Berechtigungsmanager - Dateien und Medien einstellen. (Wahrscheinlich erhaltet ihr die Berechtigungsabfrage von Termux aber auch automatisch, wenn ihr den Befehl im nächsten Abschnitt ausführt.)

Anschließend muss in Termux noch folgender Befehl ausgeführt werden:

termux-setup-storage
Terminal / Konsole

Ihr solltet nun unter ~/storage Zugriff auf den Speicher und somit z.B. euer Download-Verzeichnis haben.

Hinweis Termux und Internal-/External-Storage

Mit Termux habt ihr teilweise nur einen eingeschränkten Zugriff auf den Android-Speicher.
Details siehe Termux-Wiki: Internal and external storage

Rechner - SSHFS installieren & einrichten

Unter Ubuntu könnt ihr SSHFS wie folgt installieren:

sudo apt install sshfs
Terminal / Konsole

Legt nun noch ein Verzeichnis ein, unter welchem ihr später das Android-Dateisystem einbinden wollt. Bei mir ist es z.B. das Verzeichnis ~/android.

Android-Dateisystem einbinden

Startet nun auf eurem Android-Smartphone den SSH-Server mit folgendem Befehl:

sshd
Terminal / Konsole

Auf eurem Rechner könnt ihr nun das Termux-Benutzer-Heimverzeichnis wie folgt einbinden:

sshfs -p 9090 192.168.10.123: android/ -o follow_symlinks -o idmap=user -o uid=$(id -u) -o gid=$(id -g)
Terminal / Konsole

IP und Port müsst ihr entsprechend anpassen. Die Option zum Folgen von symbolischen Links wird benötigt, weil die Verzeichnisse in Termux unter ~/storage nur symbolische Links sind. Die anderen Parameter dienen dazu, die Benutzerrechte zwischen dem Benutzer eures Rechners und dem Android-Benutzer zu mappen.

Wenn alles geklappt hat, solltet ihr nun in eurem Dateibrowser auf die Dateien eures Android-Geräts zugreifen können:

Android-Dateisystem per SSHFS einbinden

Fazit

SSHFS in Verbindung mit Termux bietet eine einfache Möglichkeit das Dateisystem eines Android-Geräts in das eigene Dateisystem einzubinden.