====== FTP (File Transfer Protocol)-Server ====== Das [[wpde>Ftp]]-Protokoll ist eine effiziente Möglichkeit um Dateien * vom Server zum Client (Download), * vom Client zum Server (Upload) * oder clientgesteuert zwischen zwei Servern (FXP) zu übertragen. Das Protokoll ist **unverschlüsselt**, es sollte nur für anonymes Herunterladen benutzt werden, da die Zugangsdaten mitgehört werden könnten. Es ist aber eine **verschlüsselte Variante** (FTPs) möglich (mit [[netzwerke:ssl-und-tls|SSL oder TLS]]), die viele gute FTP-Clients beherrschen. FTP verwendet für die Steuerung und Datenübertragung jeweils separate Verbindungen: Eine FTP-Sitzung beginnt, indem vom Client zum Control Port des Servers (der Standard-Port dafür ist Port 21) eine TCP-Verbindung aufgebaut wird. Über diese Verbindung werden Befehle zum Server gesendet. Die Datenübertragung findet pro Vorgang auf einer separaten TCP-Verbindung statt. ===== Modi ===== Es gibt zwei Modi * Beim **aktiven FTP** (auch "Active Mode") öffnet der Client einen zufälligen Port und teilt dem Server diesen sowie die eigene IP-Adresse mittels des PORT-Kommandos mit. Dies ist typischerweise ein Port des Clients, der jenseits 1023 liegt, kann aber auch ein anderer Server sein. Die Kommunikation mit Befehlen erfolgt ausschließlich auf dem Control Port. * Beim **passiven FTP** (auch "Passive Mode") sendet der Client ein PASV-Kommando, der Server öffnet einen Port und übermittelt diesen mitsamt IP-Adresse an den Client. Hier wird auf Client Seite ein Port jenseits 1023 verwendet und auf Server Seite FTP-Port -1, d.h. im Normalfall 20. ===== Verschlüsselung ===== * **explizites SSL**, d. h. das FTP-Programm aktiviert //nachdem// die TCP-Verbindung steht aber //vor// einer Aktion (z. B. Login) erstmal SSL, die Kommunikation läuft ganz normal über Port 21 (Steuerung) bzw. 20 (Daten). Somit werden sensible Daten bei der Übertragung geschützt und FTP-Programme die das nicht können können werden weiterhin unterstützt und können parallel auf den gleichen Ports arbeiten. Dieser Modus wird von wenigen FTP-Programmen unterstützt, z. B. [[software:Filezilla]]. * **implizites SSL** bedeuted, das gleich während des Verbindungsaufbaus eine [[netzwerke:ssl-und-tls|SSL/TLS]]-geschützte Verbindung aufgebaut wird. Dieser Modus wird von vielen FTP-Programmen unterstützt, z. B. [[software:Filezilla]]. Normalerweise lauscht man bei dieser Variante auf Port 990 TCP. Siehe auch: * [[wpde>FTP über SSL]] * [[http://wiki.vpslink.com/Configuring_vsftpd_for_secure_connections_(TLS/SSL/SFTP)|Configuring vsftpd for secure connections (TLS/SSL/SFTP)]] ===== Links ===== [[http://www.informatik.hu-berlin.de/Infosys/ftp_anleitung.html]] [[http://www.htl-steyr.ac.at/~morg/pcinfo/network/ftpcommands.html]] [[http://www.uni-koeln.de/rrzk/ftp/transfer/unix.html]] ===== FTP-Clients ===== FTP-Clients gibt für jedes Betriebssystem in rauen Mengen. * [[wpde>Filezilla]] ist für Windows, Linux, Mac OS erhältlich und sehr zu empfehlen. ==== Kommandozeile ==== * ftp * lftp: [[http://www.linux.com/feature/122169|CLI Magic: Quick and easy backup with lftp]] * ncftp : komfortablerer Textclient als ''ftp'' * [[http://yafc.sourceforge.net/|yafc]] - Bookmarks, Rekursiv hoch- und runterladen, Tab-Vervollständigung auch bei den Remote-Ordner ==== grafische Clients ==== * gftp ([[linux:Gnome]]) * [[software:Filezilla]] ==== webclients ==== FTP-Client die auf einem Webserver laufen. * [[http://sourceforge.net/projects/phpwebftp/|phpWebFTP]] * [[http://www.agency4net.de/downloads/webftp-client/|AGENCY4NET WEBFTP]] ===== FTP-Server (daemons) ===== * [[server:vsftp]] Ein kleiner und effizienter FTP Server, bei dem von Grund auf hoher Wert auf die Sicherheit gelegt wurde. * [[server:pure-ftpd]]: ebenfalls ein guter ftp-daemon, bietet z.B. das einsperren ("chrooten") von Benutzern an. * proftpd * [[https://code.google.com/p/pyftpdlib/|Python FTP server library (pyftpdlib)]] - FTP-Implementierung in [[programmiersprachen:Python]]. ===== FTP-Mounten ===== aptitude install curlftpfs * **fallweise** verbinden: curlftpfs USERNAME:PASSWORT@SERVER.tld /media/mein_ftp * **permanent** hinterlegen: * Ohne Zugangsdaten:curlftpfs#ftp.host.com /media/mein_ftp fuse rw,uid=1000,user,noauto 0 0 * Mit Zugangsdaten: # Passwort systemweit lesbar!!! curlftpfs#USER:PASSWORD@SERVER.tld /media/mein_ftp fuse rw,uid=1000,user,noauto 0 0 * Besser eine Datei ''.netrc'' mit den Zugangsdaten anlegen (im Home-Ordner des Benutzers der mounted): machine SERVER.tld login USER password PASSWORD ==== Links ==== * [[http://www.exanto.de/sftp-und-ftp-unter-linux-mounten.html|SFTP und FTP unter Linux mounten]] * [[http://curlftpfs.sourceforge.net/|curlftpfs Homepage]]