====== Linux - SFTP Datentransfer via SSH ====== **SFTP (Secure File Transfer Protocol)** ist eine für **SSH (Secure Shell)** entwickelte Erweiterung zur sicheren Übertragung von Daten. Des Weiteren besteht die Möglichkeit Verzeichnisinhalte auszulesen und Daten auf dem entfernten Rechner anzupassen oder zu löschen. \\ Die Übertragungen können hierbei klassisch über das **Terminal**, aber auch einen grafischen Client wie [[wiki:linux:tools:linux-filezilla|FileZilla]] erfolgen. \\ \\ Wichtig! Bitte beachten, dass SFTP und FTPS nicht das Gleiche ist! \\ \\ ===== Installation ===== **SFTP (Secure File Transfer Protocol)** ist im Paket **OpenSSH-Server** enthalten. Eine detaillierte Anleitung zur Installation findet Ihr unter **[[wiki:linux:konnektivitaet:linux-ssh-server|]]** \\ sudo apt update \\ sudo apt install openssh-server \\ ===== Syntax ===== Die Syntax von sftp sftp \\ ==== Optionen ==== | ** Option ** || ** Erläuterung ** | | -h | --help | Anzeigen der Optionen des Befehls | | -r | | Setzt beim Login den rekrusiven Datei Up-/Download | ==== Navigation ==== | ** Befehl remote ** | ** Befehl lokal ** | ** Erläuterung ** | | help / ? | - | Auflistung der Befehlsübersicht | | bye / exit / quit | - | SFTP beenden | | - | !exit | Wechsel zurück von lokaler auf remote Shell | | ! | - | Wechsel zur lokalen Shell | | cd | lcd | Wechsel von Verzeichnissen | | chgrp [-h] | - | Änderung der Gruppe einer Datei oder eines Verzeichnisses | | chmod [-h] | - | Änderung der Zugriffsrechte einer Datei oder eines Verzeichnisses | | chown [-h] | - | Änderung des Besitzers einer Datei oder eines Verzeichnisses | | df [-hi] | - | Anzeige der Festplattenauslastung des aktuellen Verzeichnisses | | ls [-1afhlnrSt] | lls | Auflistung des Verzeichnisinhaltes | | mkdir | lmkdir | Verzeichnis erstellen | | rmdir | - | Verzeichnis löschen | | rm | - | Datei löschen | | pwd | lpwd | Ausgabe des Remote-Verzeichnisses | | rename | - | Datei umbenennen | | put [-afpR] local [remote] | - | Upload von lokalem Rechner auf den remote Server | | get [-afpR] remote [local] | - | Download von remote Server auf den lokalen Rechner | | reput [-fpR] local [remote] | - | Wiederaufnahme des Uploads | | reget [-fpR] remote [local] | - | Wiederaufnahme des Downloads | Anmerkung: Bei den Befehlen funktionieren in der Regel auch die Operatoren. Siehe hierzu die ManPages der jeweiligen Befehle. ===== Anleitung ===== ==== Login ==== Der Login funktioniert ähnlich wie bei SSH sftp @ \\ Wird beim Login die Option -r mit übergeben, ist der rekursive Datei Up-/Download aktiviert. sftp -r @ \\ jolly@roger:~$ sftp -r jolly@linux42.de \\ Connected to linux42.de. \\ sftp> \\ Für das Login können auch SSH-Schlüssel verwendet werden [[wiki:linux:konnektivitaet:linux-ssh-key|]]. \\ ==== Navigation ==== Die Navigation bei SFTP ist, obwohl gut durchdacht und eigentlich nicht schwer, etwas gewöhnungsbedürftig. \\ \\ Generell muss einem nur bewusst sein, dass man in einem Terminal-Fenster auf zwei Ebenen Arbeitet. Einmal lokal und einmal auf dem Remote-Server. \\ \\ Zwischen den Fenstern kann man wechseln oder die Befehle Systemübergreifend nutzen. Hierfür steht einem die erweiterte Option **-l** zur Verfügung. \\ \\ Um das Ganze zu verdeutlichen, hier mal die Ausgaben an Hand des Beispiels **pwd** zum anzeigen der aktuellen Position. \\ \\ ** # Verbindung zum Server herstellen ** \\ jolly@poa:$sftp -r jolly@linux42.de \\ Connected to linux42.de. \\ sftp> \\ \\ ** # Anzeige des aktuellen Verzeichnisses auf dem Remote-Server ** \\ sftp> pwd \\ Remote working directory: /home/jolly \\ sftp> \\ \\ ** # Anzeige des aktuellen Verzeichnisses auf dem lokalen Rechner ** \\ sftp> lpwd \\ Local working directory: /home/jolly \\ sftp> \\ \\ ** # Wechsel auf die lokale Shell, Verbindung besteht immer noch ** \\ sftp> ! \\ jolly@poa:~$ pwd \\ /home/jolly \\ jolly@poa:~$ \\ \\ ** # Verlassen der lokalen Shell und Wechsel zurück zur Remote-Shell ** \\ jolly@poa:~$ !exit \\ exit\\ exit \\ Shell exited with status 127 \\ sftp> \\ ==== Up-/Download ==== Hier noch als Beispiel wie man Daten hoch- und herunterlädt. \\ ** # Remote-Verzeichnisinhalt auflisten ** \\ sftp> ls \\ Bilder Dokumente Downloads Musik Schreibtisch Videos \\ \\ ** # In Verzeichnis Bilder wechseln ** \\ sftp> cd Bilder \\ sftp> ls -la \\ drwxr-xr-x 2 jolly jolly 4096 Mar 7 00:29 . \\ drwxr-xr-x 24 jolly jolly 4096 May 20 10:45 .. \\ -rwxrwxrwx 1 jolly jolly 190849 Feb 20 19:13 sonnenaufgang.jpg \\ \\ ** # Herunterladen eines Bildes ** \\ sftp> get sonnenaufgang.jpg \\ Fetching /home/jolly/Bilder/sonnenaufgang.jpg to sonnenaufgang.jpg \\ /home/jolly/Bilder/sonnenaufgang.jpg 100% 186KB 16.1MB/s 00:00 \\ \\ ** # Hochladen eines Bildes ** \\ sftp> put Bilder/sonnenuntergang.jpg \\ Uploading Bilder/sonnenuntergang.jpg to /home/jolly/Bilder/sonnenuntergang.jpg \\ Bilder/sonnenuntergang.jpg 100% 721KB 28.8MB/s 00:00 \\ \\ ** # Überprüfung des Uploads ** \\ sftp> ls \\ sonnenaufgang.jpg sonnenuntergang.jpg \\ sftp> \\ ---- ===== Fazit ===== Ihr seht, dass die Möglichkeiten mit **SFTP** umfangreicher sind als mit **SCP** [[wiki:linux:datenaustausch:scp-secure-copy|]]. Dadurch wird die Thematik aber auch gleich um einiges komplexer. \\ \\ Trotzdem bietet **SFTP** die umfangreiche Möglichkeit, Dateien sicher zu verwalten. \\ \\ Alternativ kann auch ein grafisches Programm wie z.B. Filezilla genutzt werden um die Daten zu transferieren. Die Einstellung und Installation habe ich unter [[wiki:linux:tools:linux-filezilla|]] dokumentiert. \\ \\ ---- {{page>impressum:ausschluss#Haftungsausschluss}} ---- ~~DISCUSSION~~