Wie man Dateien mit FTP hochlädt: Ein vollständiger technischer Leitfaden
Das File Transfer Protocol (FTP) ist ein Netzwerkprotokoll, das nach dem Client-Server-Modell arbeitet und die bidirektionale Dateiübertragung zwischen einem lokalen Rechner und einem Remote-Host über TCP/IP ermöglicht. Es verwendet zwei separate Kanäle — einen Steuerkanal (Port 21) für Befehle und einen Datenkanal (Port 20 oder einen ausgehandelten ephemeren Port) für die eigentlichen Dateiinhalte, was ein grundlegendes architektonisches Detail ist, das die meisten Firewall- und Passive-Mode-Probleme erklärt, auf die Praktiker stoßen.
Für jeden, der einen Webserver verwaltet, Anwendungscode bereitstellt oder eine VPS Hosting-Umgebung administriert, ist die Beherrschung von FTP und seinen sicheren Nachfolgern unerlässlich. Dieser Leitfaden behandelt den vollständigen Workflow: Protokollauswahl, Client-Konfiguration, Verzeichnisnavigation, Batch-Übertragungen, Berechtigungsverwaltung und produktionsreife Fehlerbehebung — einschließlich Sonderfälle, die generische Tutorials auslassen.
FTP-Architektur und Protokollvarianten verstehen
Bevor Sie einen Client verwenden, verhindert das Verständnis der tatsächlich verwendeten Protokollvariante stundenlange Fehlersuche.
Aktiver vs. passiver Modus
Das Dual-Channel-Design von FTP erzeugt eine kritische Verhaltensaufteilung:
- Aktiver Modus: Der Server initiiert die Datenverbindung zurück zum Client auf einem vom Client angegebenen Port. Dies schlägt fast immer bei NAT-Routern oder strengen Firewalls fehl, da die eingehende Verbindung vom Server blockiert wird.
- Passiver Modus (PASV): Der Client initiiert beide Verbindungen. Der Server öffnet einen zufälligen High-Port und teilt dem Client mit, sich damit zu verbinden. Dies ist der korrekte Standard für praktisch jede moderne Bereitstellung.
Die meisten Verbindungsfehler in der Produktion entstehen dadurch, dass der aktive Modus gegen einen durch eine Firewall geschützten Server verwendet wird, oder durch einen Server, dessen passiver Portbereich nicht in seinen eigenen Firewall-Regeln geöffnet ist.
Protokollvergleichstabelle
| Funktion | FTP | FTPS (FTP über TLS) | SFTP (SSH-Dateiübertragung) | SCP |
|---|---|---|---|---|
| — | — | — | — | — |
| Verschlüsselung | Keine | TLS/SSL | SSH | SSH |
| Steuerkanal-Port | 21 | 21 (explizit) / 990 (implizit) | 22 | 22 |
| Datenkanal | Separat (20/ephemer) | Separat (TLS-verschlüsselt) | Einzelner gemultiplexter Kanal | Einzelner Kanal |
| Firewall-Kompatibilität | Schlecht | Schlecht | Ausgezeichnet | Ausgezeichnet |
| Übertragungen fortsetzen | Ja (REST-Befehl) | Ja | Ja | Nein |
| Verzeichnisauflistung | Ja | Ja | Ja | Nein |
| Zertifikat erforderlich | Nein | Ja (serverseitig mindestens) | Nein (Schlüssel oder Passwort) | Nein |
| Für Produktion empfohlen | Nein | Situationsabhängig | Ja | Ja (Massenkopiervorgänge) |
Die praktische Schlussfolgerung: Verwenden Sie standardmäßig SFTP. Verwenden Sie FTPS nur, wenn ein Legacy-System es ausdrücklich erfordert. Vermeiden Sie einfaches FTP vollständig auf jedem internetfähigen Server — Anmeldedaten und Dateiinhalte werden im Klartext übertragen und können trivial abgefangen werden.
Voraussetzungen und Anmeldedaten sammeln
Bevor Sie einen Client öffnen, sammeln Sie folgende Informationen von Ihrem Hosting-Anbieter oder Server-Administrator:
- Hostname oder IP-Adresse — z. B.
ftp.yourdomain.comoder203.0.113.45 - Protokoll — FTP, FTPS (explizit oder implizit) oder SFTP
- Port — 21 für FTP/FTPS-explizit, 990 für FTPS-implizit, 22 für SFTP
- Benutzername und Passwort — oder ein privater SSH-Schlüssel für SFTP-schlüsselbasierte Authentifizierung
- Remote-Stammpfad — üblicherweise
/public_html,/var/www/htmloder/home/username/public_htmlje nach Server-Stack
Wenn Sie mit einem VPS mit cPanel arbeiten, werden Ihre FTP-Anmeldedaten unter cPanel > FTP-Konten erstellt, wo Sie auch jedes Konto auf ein bestimmtes Verzeichnis beschränken können — eine Sicherheitspraxis, die den Schadensradius bei kompromittierten Anmeldedaten begrenzt.
Schritt 1: FileZilla installieren und konfigurieren
FileZilla ist nach wie vor der am weitesten verbreitete plattformübergreifende FTP-Client aufgrund seiner Unterstützung für FTP, FTPS und SFTP, des integrierten Site-Managers und der Übertragungswarteschlange mit Fortsetzungsfunktion.
Download: Laden Sie den FileZilla-Client (nicht den Server) von filezilla-project.org herunter. Überprüfen Sie die auf der Download-Seite veröffentlichte SHA-512-Prüfsumme, bevor Sie das Installationsprogramm ausführen — dies ist ein Schritt, den die meisten Tutorials überspringen, aber Supply-Chain-Angriffe auf beliebte Dienstprogramme sind dokumentiert.
Öffnen Sie nach der Installation FileZilla und navigieren Sie zu Bearbeiten > Einstellungen > Übertragungen > Dateitypen. Stellen Sie den Standard-Übertragungstyp auf Binär ein, nicht auf Auto. Die automatische Erkennung kann Binärdateien (Bilder, Archive, ausführbare Dateien) stillschweigend beschädigen, indem sie eine Zeilenende-Konvertierung anwendet, wenn die Heuristik die Datei falsch klassifiziert.
Schritt 2: Einen Site-Manager-Eintrag erstellen
Die Verwendung der Schnellverbindungsleiste ist für einmalige Aufgaben akzeptabel, speichert jedoch Anmeldedaten im Klartext in recentservers.xml. Für jede wiederkehrende Verbindung verwenden Sie stattdessen den Site-Manager.
- Öffnen Sie Datei > Site-Manager (oder drücken Sie
Ctrl+S). - Klicken Sie auf Neue Site und geben Sie ihr einen beschreibenden Namen.
- Konfigurieren Sie die Registerkarte Allgemein:
- Protokoll: Wählen Sie SFTP für SSH-basierte Server oder FTP mit explizitem TLS für FTPS.
- Host: Geben Sie den Server-Hostnamen oder die IP-Adresse ein.
- Port: Lassen Sie das Feld leer, um den Protokollstandard zu verwenden, oder geben Sie ihn explizit an.
- Anmeldetyp: Wählen Sie Normal für Passwort-Authentifizierung oder Schlüsseldatei für SSH-schlüsselbasiertes SFTP.
- Benutzer / Passwort: Geben Sie die Anmeldedaten ein.
- Legen Sie auf der Registerkarte Erweitert das Standard-Remote-Verzeichnis auf Ihr Web-Stammverzeichnis fest (z. B.
/public_html) und das Standard-lokale Verzeichnis auf Ihren Projektordner. Dies eliminiert die Navigationszeit bei jeder Sitzung. - Klicken Sie auf Verbinden.
Für SFTP mit schlüsselbasierter Authentifizierung — dem empfohlenen Ansatz für Dedizierte Server — verweisen Sie das Feld Schlüsseldatei auf Ihren privaten Schlüssel (Format .pem oder .ppk). FileZilla verwendet sein eigenes Schlüsselformat; konvertieren Sie OpenSSH-Schlüssel bei Bedarf mit PuTTYgen.
Schritt 3: Die Dual-Pane-Oberfläche navigieren
Nach der Verbindung zeigt FileZilla eine geteilte Ansicht:
- Linkes Fenster (Lokale Site): Ihr lokales Dateisystem. Navigieren Sie zu dem Verzeichnis, das die hochzuladenden Dateien enthält.
- Rechtes Fenster (Remote-Site): Das Dateisystem des Servers. Navigieren Sie zum Zielverzeichnis — typischerweise
/public_htmlfür Web-Inhalte. - Untere Warteschlangenbereiche: Zeigen Übertragungen in der Warteschlange, fehlgeschlagene Übertragungen und erfolgreiche Übertragungen mit Zeitstempeln und Byte-Anzahl an.
Der Verzeichnisbaum oben in jedem Fenster und die darunter liegende Dateiliste sind unabhängig — ein Klick auf einen Ordner im Baum scrollt die Dateiliste nicht automatisch. Dies verwirrt neue Benutzer, die sich fragen, warum ihre Dateiliste leer erscheint.
Schritt 4: Dateien hochladen
Einzelne Datei oder manuelle Auswahl
Klicken Sie mit der rechten Maustaste auf eine Datei im lokalen Fenster und wählen Sie Hochladen, oder ziehen Sie sie in das Remote-Fenster. Für die Mehrfachauswahl verwenden Sie Ctrl+Click (Windows/Linux) oder Cmd+Click (macOS) für nicht zusammenhängende Auswahl, oder Shift+Click für einen Bereich.
Drag-and-Drop-Upload
Wählen Sie Dateien im lokalen Fenster aus und ziehen Sie sie in den Zielordner im Remote-Fenster. FileZilla stellt alle Elemente in die Warteschlange und beginnt sofort mit der Übertragung.
Synchronisierter Verzeichnis-Upload
Um ein gesamtes Projektverzeichnis bereitzustellen, klicken Sie mit der rechten Maustaste auf den lokalen Ordner und wählen Sie Hochladen. FileZilla lädt alle Inhalte rekursiv hoch und bewahrt dabei die Verzeichnisstruktur auf der Remote-Seite.
Übertragungsfortschritt überwachen
Die Übertragungswarteschlange unten zeigt:
- Dateiname und Größe
- Übertragungsgeschwindigkeit (Bytes/Sekunde)
- Verstrichene und geschätzte Zeit
- Remote-Zielpfad
Eine Übertragung, die abgeschlossen wird, aber 0 Bytes übertragen zeigt, ist ein stiller Fehler — die Datei wurde erstellt, ist aber leer. Dies weist typischerweise auf ein Berechtigungsproblem im Zielverzeichnis oder eine Disk-Quota-Verletzung auf dem Server hin.
Schritt 5: Korrekte Dateiberechtigungen nach dem Upload setzen
Dies ist der am häufigsten übersprungene Schritt und die Ursache eines erheblichen Prozentsatzes der Support-Tickets „meine Website ist nach dem Upload defekt”.
Klicken Sie nach dem Hochladen mit der rechten Maustaste auf eine Datei oder ein Verzeichnis im Remote-Fenster und wählen Sie Dateiberechtigungen. Die numerische Darstellung entspricht direkt den Unix-Berechtigungs-Oktetten:
- 644 — Standard für Web-Dateien (Eigentümer lesen/schreiben, Gruppe/andere nur lesen)
- 755 — Standard für Verzeichnisse und ausführbare Skripte
- 600 — Private Dateien, die nicht über das Web zugänglich sein sollten (z. B. Konfigurationsdateien mit Anmeldedaten)
- 777 — Niemals in der Produktion verwenden; gewährt weltweiten Schreibzugriff
Für eine rekursive Berechtigungskorrektur eines gesamten hochgeladenen Verzeichnisbaums aktivieren Sie In Unterverzeichnisse einbeziehen und wenden Sie 644 auf Dateien und 755 auf Verzeichnisse separat an. FileZilla unterscheidet in einem einzigen rekursiven Durchlauf nicht zwischen Dateien und Verzeichnissen — Sie müssen es zweimal mit dem entsprechenden Filter ausführen.
Alternativ können Sie nach der Verbindung über SSH Berechtigungen in großem Umfang korrigieren:
find /public_html -type f -exec chmod 644 {} ;
find /public_html -type d -exec chmod 755 {} ;Schritt 6: Den Upload überprüfen
Gehen Sie nicht davon aus, dass eine abgeschlossene Übertragungswarteschlange bedeutet, dass die Bereitstellung korrekt ist. Führen Sie diese Überprüfungsschritte durch:
- In FileZilla: Aktualisieren Sie das Remote-Verzeichnis (
F5oder Rechtsklick > Aktualisieren) und bestätigen Sie, dass die Dateigrößen mit den lokalen Originalen übereinstimmen. Eine Größenabweichung weist auf eine abgeschnittene Übertragung hin. - Über den Browser: Laden Sie die aktualisierte Seite und führen Sie eine Erzwungene Aktualisierung durch (
Ctrl+Shift+R), um den Browser-Cache zu umgehen. - Über SSH: Für die serverseitige Überprüfung vergleichen Sie Prüfsummen:
md5sum /public_html/index.htmlVergleichen Sie die Ausgabe mit der Prüfsumme der lokalen Datei. Eine Abweichung bedeutet, dass die Datei während der Übertragung beschädigt wurde — selten bei SFTP, aber möglich bei einfachem FTP auf instabilen Verbindungen.
Erweiterte Techniken und Produktionsmuster
Unterbrochene Übertragungen fortsetzen
Wenn eine große Dateiübertragung unterbrochen wird, verwendet FileZilla den FTP-Befehl REST (oder das SFTP-Äquivalent), um ab dem letzten bestätigten Byte-Offset fortzufahren. Klicken Sie auf der Registerkarte Fehlgeschlagene Übertragungen mit der rechten Maustaste auf das fehlgeschlagene Element und wählen Sie Fehlgeschlagene Dateien zurücksetzen und erneut einreihen, dann starten Sie die Warteschlange erneut. Dies funktioniert zuverlässig mit SFTP; die Fortsetzung bei einfachem FTP hängt von der Server-Unterstützung für den Befehl REST ab.
Dateien vom Upload ausschließen
FileZillas Bearbeiten > Dateinamenfilter ermöglicht es Ihnen, Regeln zum Ausschließen von Dateien zu definieren, die Mustern entsprechen — zum Beispiel das Ausschließen von .git-Verzeichnissen, node_modules, .DS_Store oder .env-Dateien vom versehentlichen Upload. Dies ist eine kritische Schutzmaßnahme: Das Hochladen einer .env-Datei mit Datenbank-Anmeldedaten oder API-Schlüsseln in ein öffentliches Web-Stammverzeichnis ist ein schwerwiegender Sicherheitsvorfall.
Skriptgesteuerte/automatisierte FTP-Übertragungen
Für CI/CD-Pipelines oder geplante Bereitstellungen ist die FileZilla-GUI nicht geeignet. Verwenden Sie stattdessen das Befehlszeilen-Dienstprogramm lftp:
lftp -u username,password sftp://your-server.com << 'EOF'
set sftp:auto-confirm yes
mirror --reverse --delete --verbose /local/project/ /public_html/
EOFDas Flag --reverse lädt hoch (lokal zu remote), --delete entfernt Remote-Dateien, die lokal nicht vorhanden sind (mit Vorsicht verwenden), und --verbose protokolliert jeden Vorgang. Dieses Muster eignet sich für automatisierte Bereitstellungen in VPS Hosting-Umgebungen, in denen SSH-Zugang verfügbar ist.
rsync über SSH als FTP-Alternative verwenden
Für große Bereitstellungen oder inkrementelle Synchronisierungen ist rsync über SSH deutlich effizienter als FTP, da es nur die geänderten Blöcke innerhalb von Dateien überträgt, nicht ganze Dateien:
rsync -avz --progress --delete /local/project/ user@your-server.com:/public_html/-a — Archivmodus (bewahrt Berechtigungen, Zeitstempel, Symlinks)
-v — Ausführliche Ausgabe
-z — Daten während der Übertragung komprimieren
--delete — Remote-Dateien entfernen, die lokal gelöscht wurden
rsync erfordert SSH-Zugang und ist nicht über Shared-Hosting-Kontrollpanels verfügbar, ist aber das richtige Werkzeug für jede Umgebung, in der Sie den Server-Stack kontrollieren.
Häufige FTP- und SFTP-Probleme beheben
Verbindungs-Timeout oder Verbindung abgelehnt
Überprüfen Sie, ob der Hostname korrekt aufgelöst wird: nslookup ftp.yourdomain.comtelnet your-server.com 21 oder nc -zv your-server.com 22iptables -L oder ufw status, ob der Port erlaubt istsystemctl status sshd530 Anmelde-Authentifizierung fehlgeschlagen
- Bestätigen Sie, dass der Benutzername korrekt ist — FTP-Benutzernamen sind auf Linux-Systemen Groß-/Kleinschreibung-sensitiv
- Überprüfen Sie, ob das Konto nicht gesperrt ist:
passwd -S usernameauf dem Server - Überprüfen Sie
/var/log/auth.logoder/var/log/secureauf den Ablehnungsgrund - Wenn Sie cPanel verwenden, bestätigen Sie, dass das FTP-Konto nicht abgelaufen oder gesperrt ist
550 Berechtigung beim Upload verweigert
Das Remote-Verzeichnis gewährt dem authentifizierten FTP-Benutzer keinen Schreibzugriff. Überprüfen Sie Eigentümerschaft und Berechtigungen:
ls -la /public_html/Wenn das Verzeichnis einem anderen Benutzer gehört, passen Sie entweder die Eigentümerschaft an (chown) oder gewähren Sie Gruppen-Schreibberechtigung (chmod g+w). Auf Shared Hosting wird dies über den Dateimanager des Hosting-Kontrollpanels gehandhabt.
Passive-Modus-Verbindungsfehler
Wenn Sie nach einer erfolgreichen Anmeldung „Verzeichnisliste konnte nicht abgerufen werden” sehen, ist der passive Portbereich des Servers nicht erreichbar. Gehen Sie in FileZilla zu Bearbeiten > Einstellungen > FTP > Passiver Modus und versuchen Sie Auf aktiven Modus zurückfallen. Stellen Sie auf der Serverseite sicher, dass der passive Portbereich (üblicherweise 49152–65534) in der Firewall geöffnet und in den Einstellungen des FTP-Daemons korrekt konfiguriert ist (z. B. pasv_min_port und pasv_max_port in vsftpd.conf).
Binär- vs. ASCII-Übertragungskorruption
PHP-Dateien, die im ASCII-Modus von einem Windows-Client hochgeladen werden, können Windows-Zeilenenden (rn) konvertiert haben, was bestimmte Parser beschädigen kann. Bestätigen Sie, dass FileZilla unter Übertragung > Übertragungstyp > Binär auf den Binär-Modus eingestellt ist.
Alternative Upload-Methoden
FTP ist nicht immer das richtige Werkzeug. Die folgenden Alternativen sind es wert, bekannt zu sein:
cPanel / Plesk Dateimanager: Verfügbar über das webbasierte Kontrollpanel bei Shared Web Hosting und VPS Kontrollpanels. Geeignet für kleine Bearbeitungen und Einzeldatei-Uploads. Hat in den meisten Implementierungen ein Dateigrößenlimit von 2 GB und ist nicht für Massenübertragungen geeignet.
SCP (Secure Copy): Ein einfaches, skriptfähiges SSH-basiertes Kopierwerkzeug. Keine Fortsetzungsfunktion, keine Verzeichnisauflistung, aber äußerst zuverlässig für einmalige Übertragungen:
scp -r /local/project/ user@your-server.com:/public_html/Git-basierte Bereitstellung: Pushen Sie in ein leeres Repository auf dem Server und verwenden Sie einen post-receive-Hook, um Dateien in das Web-Stammverzeichnis auszuchecken. Dies ist das sauberste Bereitstellungsmuster für Code — es bietet Versionshistorie, Rollback-Fähigkeit und eliminiert die manuelle Dateiverwaltung vollständig.
Objektspeicher / CDN-Synchronisierung: Für statische Assets ist die Synchronisierung mit einem S3-kompatiblen Bucket und die Bereitstellung über CDN skalierbarer als FTP-basierte Bereitstellung und entfernt den Webserver vollständig aus dem Lieferpfad für statische Assets.
Schnelle Entscheidungsmatrix: Die richtige Übertragungsmethode wählen
| Szenario | Empfohlene Methode |
|---|---|
| — | — |
| Einmalige Dateibearbeitung auf Shared Hosting | cPanel Dateimanager |
| Reguläre Website-Bereitstellung ohne SSH | SFTP über FileZilla |
| Automatisierte CI/CD-Pipeline-Bereitstellung | `lftp` oder `rsync` über SSH |
| Große Binärdatei, einmalige Übertragung | `scp` |
| Inkrementelle Code-Bereitstellung | `rsync` oder Git post-receive Hook |
| Legacy-System, das FTP erfordert | FTPS (explizites TLS) mindestens |
| Massenbereitstellung statischer Assets | S3-kompatibler Objektspeicher-Sync |
Technische Checkliste vor dem Go-Live
- Protokoll: Nur SFTP oder FTPS — niemals einfaches FTP auf einem Produktionsserver
- Anmeldedaten: Verwenden Sie dedizierte FTP/SFTP-Konten, die auf das minimal erforderliche Verzeichnis beschränkt sind, nicht Root oder den primären Systembenutzer
- Übertragungsmodus: Binär, nicht Auto oder ASCII
- Dateiberechtigungen: 644 für Dateien, 755 für Verzeichnisse — nach dem Upload überprüft
- Sensible Dateien: Bestätigen Sie, dass
.env,.git/,node_modules/und Konfigurationsdateien mit Anmeldedaten über Dateinamenfilter vom Upload ausgeschlossen sind - Prüfsummenverifizierung: MD5- oder SHA-256-Vergleich für kritische Dateien nach der Übertragung
- Passiver Modus: Standardmäßig im FTP-Client aktiviert
- SSH-Schlüssel: Verwenden Sie schlüsselbasierte Authentifizierung für SFTP auf jedem Server, den Sie kontrollieren; deaktivieren Sie die Passwort-Authentifizierung in
sshd_configwo möglich
Häufig gestellte Fragen
Was ist der Unterschied zwischen FTP und SFTP?
FTP überträgt Daten und Anmeldedaten im Klartext über zwei separate TCP-Kanäle (Steuerung auf Port 21, Daten auf Port 20 oder ephemer). SFTP ist ein völlig anderes Protokoll, das auf SSH aufbaut und alles durch einen einzigen verschlüsselten Kanal auf Port 22 multiplext. Sie teilen einen Namen, aber keinen Protokollcode.
Warum zeigt FileZilla „Verbindungs-Timeout” auch bei korrekten Anmeldedaten?
Ein Timeout vor der Authentifizierung bedeutet typischerweise, dass der Server-Port nicht erreichbar ist — durch eine Firewall blockiert, der Dienst läuft nicht, oder der Hostname wird nicht zur richtigen IP aufgelöst. Ein Timeout nach der Authentifizierung weist üblicherweise auf ein Passive-Modus-Problem hin, bei dem der Datenkanal-Portbereich durch eine Firewall gesperrt ist. Überprüfen Sie die serverseitigen Firewall-Regeln und bestätigen Sie, dass der passive Portbereich geöffnet ist.
Kann ich FTP verwenden, um Dateien auf einen VPS ohne Kontrollpanel hochzuladen?
Ja. Installieren Sie einen SFTP-fähigen SSH-Daemon (OpenSSH, der auf allen Linux-Distributionen Standard ist) — keine zusätzliche FTP-Server-Software ist erforderlich. Verbinden Sie sich mit FileZilla über das SFTP-Protokoll auf Port 22 und Ihre SSH-Anmeldedaten oder Ihr Schlüsselpaar. Dies ist der empfohlene Ansatz für jede VPS Hosting-Umgebung.
Welche Dateiberechtigungen sollten WordPress-Dateien nach dem FTP-Upload haben?
WordPress-Kerndateien sollten 644 haben, Verzeichnisse 755, und wp-config.php sollte 600 haben (nur Eigentümer lesen/schreiben). Das Verzeichnis wp-content/uploads benötigt 755 oder 775, damit der Webserver hochgeladene Medien schreiben kann. Setzen Sie niemals ein WordPress-Verzeichnis auf 777.
Gibt es ein Dateigrößenlimit beim Hochladen über FTP?
FTP und SFTP selbst haben kein inhärentes Dateigrößenlimit — Übertragungen werden gestreamt. Praktische Limits kommen von serverseitigen Disk-Quotas, PHP upload_max_filesize (irrelevant für FTP, das PHP vollständig umgeht) oder Dateisystemlimits (ext4 unterstützt Dateien bis zu 16 TB). Bei Shared Web Hosting kann der Hosting-Anbieter eine Disk-Quota durchsetzen, die den Gesamtspeicher begrenzt, nicht die einzelne Dateigröße.
