--- title: "Sicheres FTP (sftp)" date: 2019-05-08T20:55:56+02:00 weight: 11 --- Damit du deine Daten von deinem Computer auf den Server transferieren kannst, musst du dich per [SFTP](https://de.wikipedia.org/wiki/SSH_File_Transfer_Protocol) auf unseren Server verbinden. Wir akzeptieren keine unverschlüsselte FTP-Verbindung mehr. ## Clients ### Filezilla (Linux/OS X/Windows) [Filezilla](https://filezilla-project.org/) ist ein Programm, mit dem du einfach Daten auf den Server hochladen kannst. Wenn du zum Beispiel ein Bild hochladen möchtest, verbindest du dich per filezilla auf den Server ### Cyberduck (OS X) [Cyberduck](https://cyberduck.io) ist ein Programm für Mac, mit dem du dich auf den Server verbinden kannst. ### CLI ([Kommandozeile](https://de.wikipedia.org/wiki/Kommandozeile) (Linux, OS X)) Bei den meisten Distributionen am einfachsten mit dem Dateimanager. ## SSH Authorized Keys Um [SSH](https://de.wikipedia.org/wiki/Secure_Shell)-Keys für die [SFTP](https://de.wikipedia.org/wiki/SSH_File_Transfer_Protocol)-Authentifizierung zu hinterlegen: 1. Via [SFTP]({{< ref "sftp" >}}) erstellst du eine Datei namens `ssh_authorized_keys.keys` im Verzeichnis `scripts/ssh_authorized_keys` mit deinen öffentlichen SSH Schlüsseln. 1. Du erstellst eine Datei `scripts/ssh_authorized_keys/ssh_authorized_keys.run`. Dies aktiviert die neuen Schlüssel. 1. Der FTP login sollte nun ohne Passwort funktionieren. Ein Beispiel: ``` # This will add the elipticcurve key to the authorized keys file of the sftp user. ssh-ed25519 AAAAmyelipticcurvekey ssh-ed25519 AAAAmySecondelipticcurvekey ``` Fehler werden in `logs/user-script-ssh_authorized_keys.log` protokolliert. ## SFTP bequemer nutzen Oftmals erscheint die Nutzung von SFTP mühsam, gerade weil jeweils ein spezieller Client dafür verwendet wird. Dabei möchte man ja nur kurz eine Datei editieren oder lieber gleich ein ganzes Verzeichnis mit einem lokalen Verzeichnis synchronisieren. Dies ist alles ohne Probleme möglich: Moderne Betriebssysteme (Linux, OS X, Windows) ermöglichen es, das Verzeichnis auf dem Server wie eine lokale Festplatte anzuzeigen und anzusprechen. ### Linux Im Dateimanager von Gnome (was z.B. bei [Ubuntu](https://de.wikipedia.org/wiki/Ubuntu) der Standard ist) findet man den Menupunkt "Mit Server verbinden" ([siehe hier](https://help.gnome.org/users/gnome-help/stable/nautilus-connect.html.en)). Dort kann man sich auch auf ein SSH-Server verbinden. Du musst nur deine Zugangsdaten fürs Webhosting eingeben und schon wird das Verzeichnis auf dem Server wie eine externe Festplatte eingebunden. Mehr dazu findest du unter [Sysop:SSHFS](https://wiki.immerda.ch/index.php/Sysop:SSHFS#Packages). Clients wie [lftp](https://de.wikipedia.org/wiki/Lftp) unterstützen auch das Verschieben von Verzeichnissen. lftp ermöglicht auch das Spiegeln von Verzeichnissen - damit werden nur die Änderungen übertragen (inkrementell) und nicht das ganze Verzeichnis. Dies kann auch bequem in Skripts verwendet werden: ```bash lftp -e "mirror -eRv source www; quit;" -u username sftp://ftp.foo.immer-da.ch ``` ### Windows Beschreibe, wie das einfach unter Windows zu bewerkstelligen ist! [Mitmachen!](/de/contribute/) ### OS X Auf OS X kann [lftp](https://formulae.brew.sh/formula/lftp) per [Homebrew](https://brew.sh/) installiert werden. Danach einfach dem Tutorial von Linux folgen.