Linux sFTP Server mit Smartphone verbinden
In dieser Aneitung erfahrt Ihr wie ihr euren Linux sFTP Server mit Smartphone verbinden könnt. Möchtet Ihr Daten zwischen eurem Smartphone und einem Linux System austauschen, geht das am besten über das gute alte File Transfer Protokol. Ihr könnt dann sobald eingerichtet, von eurem Smartphone aus ganz einfach Daten über den cx Dateinexplorer austauschen, kopieren, bearbeiten, löschen, herrunter oder hochladen. Fast wie eine kleine NAS, aber der funktionsumfang ist deutlich geringer. Da wir auch vom Internet aus zugreifen wollen, richten wir das ganze gleich richtig verschlüsselt ein (sFTP)
Zum Dokumente hin und her schieben, Bilder an den Server zu schicken damit diese dann bearbeitet werden können und so weiter ist das erstmal keine schlechte Lösung.
In dieser Anleitung zeige Ich Euch, wie Ihr einen sFTP Server einrichtet, und Euch mit dem Smartphone darauf via LAN und Internet damit verbindet.
Vorbereitungen um Linux sFTP Server mit Smartphone zu verbinden
Da wir im Systeverzeichnissen Änderungen vornehmen, müssen wir root Rechte haben, ansonsten dürfen wir bei jeder Änderung immer "sudo" und unser Passwort eingeben auch wenn wir den Befehl mit sudo starten.
Falls Ihr nicht immer das Passwort eingeben wollt: führt zuerst den Befehl sudo -i
aus. Damit habet Ihr für diese Sitzung root Rechte.
Einrichtung um mit sFTP Server via LAN zu verbinden
Schritt 1 SSH auf Linux Rechner installieren
Da sFTP über SSH läuft, müssen wir zuerst SSH auf dem Linux Server installieren.
Das macht ihr mit folgendem Befehl:
sudo apt install ssh
Dazu noch den openssh-server mit:
sudo apt install openssh-server
Schritt 2 SSHD Konfiguration für Linux sFTP Benutzergruppen ändern
Nachdem ihr SSH installiert habt müssen wir die Datei sshd_config bearbeiten. Das machen wir indem wir den Befehl nano /etc/ssh/sshd_config
ausführen. Navigiert zum Ende der Datei und fügt folgendes hinzu:
Match group sftp
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Möchtet Ihr Euren eigenen Benutzer der Gruppe hinzufügen, als Euch als Benutzer, dann fügt am Ende die Zeile hinzu und ersetzt <benutzername>
mit Eurem Benutzernamen.
AllowUsers <benutzername>
Die obige Konfiguration ermöglicht der sftp-Benutzergruppe den Zugriff auf Euer Home-Verzeichnisse über sFTP. Allerdings darf nicht auf die normale SSH-Shell zugegriffen werden. Speichert mit "ctrl+o" und bestätigt mit der Enter Taste. Beendet nano mit "ctrl+x"
Damit die Änderung wirksam werden müsst Ihr den SSH Service neu starten. Das erledigt Ihr mit dem Befehl sytemctl restart ssh
Schritt 3 Eine sFTP Benutzergruppe und Benutzer anlegen
Falls Ihr nur Euch als Benutzer hinzufügen möchtet, reicht es die Zeile AllowUsers
wie oben beschrieben hinzuzufügen. Möchtet Ihr mehreren Benutzern Zugriff auf verschiedene Unterordner erlauben, geht wie folgt vor:
Damit wir einen Login für unsere App später haben müssen wir zuerst Benutzergruppe und einen Benutzer erstellen. Mit dem Befehl addgroup sftp
erstellen wir in der Konsole eine sFTP Benutzergruppe
Alle Benutzer die einen sFTP Account haben sollen fügen wir jetzt der sFTP Gruppe hinzu. Das geht wie folgt.
useradd -m benutzer1 -g sftp
Als nächsten setzen wir ein Passwort für den eben erstellten benutzer1, das geht wie folgt mit dem Befehl passwd benutzer1
Wählt ein sicheres Passwort aus und bestätigt es.
Der neu erstellte Benutzer hat allerdings noch keine Rechte und kommt garnicht in den Home Ordner hinein, damit Benutzer1 auf seinen Ordner zugriff hat, aber auf die anderen nicht erteilen wir die Rechte wie folgt:
chmod 700 /home/benutzer1/
Der benutzer1 hat nun Zugriff auf sein Verzeichnis benutzer1/
Auf andere Ordner darf er aber nicht zugreifen, ebenso so dürfen andere sFTP Nutzer nicht auf sein Verzeichnis zugreifen.
Die Einrichtung für den Zugriff über das eigene LAN ist bereits abgeschlossen.
Einrichtung um mit den Linux sFTP Server via Internet zu verbinden
Damit der Zugriff über das Internet funktioniert, braucht Ihr eine feste IP Adresse, dies haben in der Regel aber die wenigsten, falls Ihr einen normalen Internetanschluss habt, besitzt Ihr keine feste IP Adresse. Die IP Adresse wechselt in der Regel von Zeit zu Zeit und verhindert beim Wechsel den Zugriff auf den sFTP Server.
Um ein Zugriff über eine immer wechselnde IP Adresse zu ermöglichen brauchen wir ein Domain, genauer gesagt eine Dienst der jedesmal auf Eure neue IP Adresse verlinkt und automatisch die neue IP übernimmt, sobald sich diese ändert. Das geht über DynDNS.
Bei DynuDNS können wir uns eine Domain erstellen, die wir nachher brauchen und von aussen auf den sFTP Server zuzugreifen. Erstellt Euch also einen Account hier und loggt Euch anschliessend ein.
Im Control Panel wählt als nächstes den DDNS Service und erstellt Euch eine Adresse. Als Host wählt Ihr z.B Euren Namen, und als Top Level Domain einen belieben Anbieter. Ich habe mir z.B die Adresse mario.hofmann.freeddns.org ausgewählt. Wählt dann anschliessend den Button "Add" aus.
Im Nächsten Feld befindet Ihr Euch nun in Eurer Domainübersicht. Tätigt die Einstellung wie wie folgt, und setzt Eure eigene IP Adresse in das Feld IPv4 Adresse. Eure aktuelle IP findet ihr rechts oben, oder über den Service Wie ist meine IP
Als nächstes geht Ihr rechts auf den Eintrag "DNS Records" und checkt ob Euch DynDNS bereits einen korrekten A-Rekord eintragt gesetzt hat. Aussehen sollte es so:
Falls kein Eintrag da ist, könntihr oben einen erstellen. "Node Name" leer lassen, "Type": ipv4, "TTL" könnt ihr so lassen,
IPv4 Adresse Eure aktuelle IP Adresse, Group könnt leer lassen. Anschliessend mit Add DNS Record übernehmen.
Voila, Ihr habt nun eure eigene Domain die automatisch jedesmal auf eure neue IP Adresse zeigt, sobald diese sich ändert.
Die Anleitung gibt es auch hier als Beitrag.
Portweiterleitung am Router für den sFTP Service
Öffnet Euer Router Menu und erstellt dort eine Portweiterleitungsregel die den Port 22 auf die interne IP Adresse Eures Linux verweisst. Habt Ihr einen HomeServer von uns, wäre das die Adresse 192.168.0.50
Wie ihr solch eine Regel erstellen könnt, hängt natürlich immer vom Router ab. Im Internet finden sich viele Anleitungen zu eurem Router, leider kann ich hier keine Anleitung geben da es sehr viele Router Modelle gibt. Wichtig ist, dass Port 22 auf die interne Adresse Eures Servers zeigt und als TCP konfiguriert ist. Bei mir sieht das in etwa so aus:
Bei mir hat der Server die Adresse 192.168.0.194. Falls Ihr ein anderes Gerät bzw einen anderen Server mit einer anderen Adresse habt, achtet darauf dass die Adresse des Servers fixiert ist.
Eine genauere Anleitung der Portweiterleitung findet Ihr auch hier in diesem Beitrag.
Firewall Regel auf dem Linux Server erstellen
Öffnet die Konsole und gebt folgendes ein um die Firewall zu aktivieren falls nicht schon getan: sudo ufw enable
Als nächstes erlaubt Ihr den Zugriff via Port 22 indem ihr folgendes eingebt: sudo ufw allow 22
Zugriff via cx Dateiexplorer für Euer Smartphone
Ladet Euch die App cx Datei Exlorer aus dem Playstore oder Aurora Store herrunter und öffnet die App.
Geht danach auf den Reiter "Netzwerk" in der Mitte und wählt den Blaue Button "Neuer Speicherort"
Fügt die IP Adresse Eures Servers für den Zugriff via LAN hinzu und tragt die Daten des Benutzers ein, den wir im sFTP Setup erstellt haben und drücket auf OK. Wichtig dabei ist, dass Ihr Euch dabei im LAN befindet, und nicht wie bei mir auf dem Screenshot via Mobilfunk eingeloggt seid.
Danach solltet Ihr Euch im Home Ordner Eures Servers befinden.
Geht wieder zurück auf den Reiter Netzwerk und fügt einen neuen Speicherort hinzu.
Tragt nun Eure erstellte Domain inkl Benutzer und Passwort ein. Damit dies funktioniert, Ihr müsst mit dem Mobilfunknetz verbunden sein. Im Eigenen Netzwerk kann zu Problemen führen, vor allem bei Sunrise oder UPC Routern da diese eine bestimmte Funktion nicht unterstützen. Bei Swisscomroutern kann auf die Domain auch im eigenen LAN Netzwerk zugegriffen werden.
Ihr solltet nun wieder mit eurem Home Ordner des Linux Servers verbunden sein.
Mit der App könnt ihr nun Dateien hin und her kopieren, löschen und herrunterladen.
Bei Euch wird natürlich nur der Benutzer1 angezeigt, und Euer Administrator Konto. Mit diesem könnt Ihr Euch natürlich auch via sFTP anmelden. Der aktuell eingeloggte Nutzer hat natürlich nur auf sein Benutzerkonto Zugriff. Der Administrator ebenso nur Zugriff auf sein eigenes Konto.
Nun haben wir es endlich geschaft und Ihr kleiner voll verschlüsselter sFTP Server ist eingerichtet.
Habt ihr Fragen? Schickt doch einen Kommentar ab und stellt Eure Fragen!