Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Linux 01.10.2026 · 8 min Lesezeit

KeyHelp: FTP-Benutzer mit eigenen Verzeichnissen anlegen und verschlüsselte Verbindungen erzwingen

So legen Sie in KeyHelp FTP-Benutzer für Agenturen und Dienstleister mit eigenem Stammverzeichnis an und erzwingen FTPS. Mit Prüfung per curl: Klartext abgelehnt, Verzeichnisgrenze hält, Passwort ohne TLS im Klartext.

Geprüft am 01.10.2026 · für KeyHelp 26.1.1

Mit KI erstellt – redaktionelle Prüfung ausstehend

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Illustration eines Hosting-Panels mit der Überschrift FTP-Benutzer und den Karten Ordner, FTPS, Zugang

Eine Agentur soll die Website eines Kunden pflegen, aber nur deren Ordner sehen und keine E-Mails, Logs oder Sicherungen. Dafür legt der Kunde in KeyHelp einen eigenen FTP-Benutzer mit einem Stammverzeichnis an. Diese Anleitung zeigt, wie das geht, wie KeyHelp den Benutzer auf diesen Ordner beschränkt und wie der Admin erzwingt, dass Passwort und Dateien nur verschlüsselt übertragen werden. Beides haben wir mit curl auf dem Server selbst nachgeprüft, inklusive eines Mitschnitts, der zeigt, was ohne Verschlüsselung übertragen wird. Grundlage ist ein KeyHelp-Server wie in KeyHelp installieren und absichern.

Voraussetzungen

  • KeyHelp-Server, getestet mit KeyHelp 26.1.1 (Build 3698) auf Debian 12.15 mit ProFTPD 1.3.8.
  • Kundenkonto, im Beispiel kunde1 (Max Mustermann) mit der Domain kunde1.example.de. Für die Option zur Verschlüsselung brauchen Sie den Admin-Zugang.
  • FTP-Programm mit FTPS-Unterstützung, etwa FileZilla. Im Test haben wir curl 7.88.1 auf dem Server selbst verwendet, also über 127.0.0.1. Verbindungen von außen über eine Firewall haben wir nicht geprüft.

Schritt 1: Verschlüsselung für den ganzen Server erzwingen (Admin)

Als Admin öffnen Sie „Konfiguration“, „FTP-Server“. Die Option „Nur SSL/TLS-gesicherte Verbindungen zulassen“ beschreibt KeyHelp so: „Wenn aktiviert, sind nur FTPS-Verbindungen im expliziten Modus erlaubt.“ Auf unserem frisch installierten Server war der Haken bei „Aktiviert“ bereits gesetzt.

KeyHelp-Konfiguration FTP-Server mit aktivierter Option Nur SSL/TLS-gesicherte Verbindungen zulassen und der Richtlinie Automatisch generierte Namen
Der TLS-Zwang für FTP ist eine serverweite Einstellung des Admins

Technisch schreibt KeyHelp die Einstellung in die TLS-Konfiguration von ProFTPD:

grep -vE "^\s*#|^\s*$" /etc/proftpd/tls.conf
    TLSEngine                   on
    TLSProtocol                 ALL -SSLv3 -TLSv1 -TLSv1.1 
    TLSRSACertificateFile       /etc/ssl/keyhelp/ftp.pem
    TLSRequired                 on

Darunter legen Sie fest, wie FTP-Benutzer heißen: „Automatisch generierte Namen“ (Standard), „Eingeschränkte Namenswahl“ mit vorangestelltem Kundennamen oder „Freie Namenswahl“.

Verifizieren: Nach „Speichern“ meldet KeyHelp „Die Einstellungen wurden aktualisiert. Die Änderungen werden in wenigen Augenblicken wirksam.“ Im Test begann unsere Kontrolle um 19:56:33 Uhr Serverzeit. Um 19:57:03 Uhr stand der neue Wert in tls.conf, und ProFTPD war zur selben Sekunde neu gestartet:

ActiveEnterTimestamp=Thu 2026-10-01 19:57:03 UTC

Schritt 2: FTP-Benutzer mit eigenem Verzeichnis anlegen (Kunde)

Im Kundenbereich öffnen Sie „Ressourcen“, „FTP-Benutzer“ und klicken auf „FTP-Benutzer hinzufügen“. Die Seite erklärt das Prinzip: „Jeder Benutzer, den Sie anlegen, kann Daten und Ordner im zugeordneten Verzeichnis und dessen Unterverzeichnissen speichern und löschen.“

KeyHelp-Formular FTP-Benutzer hinzufügen mit automatisch ausgefülltem Benutzernamen, Beschreibung Agentur Webdesign, Stammverzeichnis /www/agentur/ und leeren Passwortfeldern
Das Stammverzeichnis bestimmt, was der FTP-Benutzer sieht
  • Benutzername: Bei automatisch generierten Namen bleibt das Feld gesperrt („Diese Information wird automatisch ausgefüllt.“).
  • Beschreibung: frei, im Beispiel „Agentur Webdesign“.
  • Stammverzeichnis: vorgegeben ist /www/. Wir haben /www/agentur/ eingetragen. Laut Formular gilt: „Wenn das angegebene Verzeichnis nicht existiert, wird es automatisch erstellt.“
  • Passwort und Passwort bestätigen: Pflichtfelder. „Generieren“ erzeugt einen Vorschlag.

Nach „Speichern“ meldete KeyHelp „Der FTP-Benutzer kunde1_ftp1 wurde erfolgreich angelegt.“ Der Benutzer ist kein Systemkonto, sondern ein Eintrag in der KeyHelp-Datenbank, den ProFTPD per SQL abfragt. Er läuft mit derselben UID wie der Kunde:

id	id_user	status	username	uid	gid	homedir	shell	login_enabled	description
1	2	3	kunde1_ftp1	5001	5001	/home/users/kunde1/www/agentur/	/bin/false	Y	Agentur Webdesign

Direkt nach dem Speichern existierte der Ordner noch nicht. Bei der nächsten Kontrolle 48 Sekunden später war er angelegt und der Status von 3 auf 1 gewechselt:

drwxr-xr-x 2 kunde1 kunde1 4096 Oct  1 19:55 /home/users/kunde1/www/agentur

Verifizieren: In der Liste zeigt „Anzeigen“ unter „Verbindungsdaten“ alles, was die Agentur für ihr FTP-Programm braucht.

KeyHelp-Dialog Verbindungsdaten mit Server server.example.de, Port 21, Protokoll FTP über TLS (FTPS), Verschlüsselung Expliziter Modus und Benutzername kunde1_ftp1
Diese Angaben geben Sie an den Dienstleister weiter

Schritt 3: Verbindung mit FTPS prüfen

Den Test haben wir mit curl auf dem Server ausgeführt. Die Zugangsdaten lagen in einer .netrc-Datei, damit das Passwort nicht in der Befehlszeile steht. --ssl-reqd verlangt explizites TLS, -k akzeptiert das selbst signierte Zertifikat der Testinstallation:

curl -sv --ssl-reqd -k --netrc-file /root/ftp.netrc ftp://127.0.0.1/
< 220 ProFTPD Server (server.example.de FTP Server) [::ffff:127.0.0.1]
> AUTH SSL
< 234 AUTH SSL successful
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
> USER kunde1_ftp1
< 331 Password required for kunde1_ftp1
< 230 User kunde1_ftp1 logged in
> PROT P
< 200 Protection set to Private

Die Anmeldung läuft erst nach dem TLS-Aufbau, und mit PROT P ist auch der Datenkanal verschlüsselt. Ohne -k brach curl im Test mit „SSL certificate problem: self-signed certificate“ ab. Das FTP-Zertifikat stellt KeyHelp selbst aus, für den Hostnamen des Servers:

subject=C = DE, ST = Thuringia, L = Erfurt, O = KeyHelp, OU = KeyHelp Control Panel, CN = server.example.de, emailAddress = info@keyhelp.de

FTP-Programme fragen deshalb beim ersten Verbinden, ob Sie dem Zertifikat vertrauen. Ob KeyHelp für FTP ein Let's-Encrypt-Zertifikat verwenden kann, haben wir nicht geprüft.

Verifizieren: Laden Sie eine Testdatei hoch. Im Test landete sie im Stammverzeichnis, das Transferprotokoll vermerkt den Benutzer und ftps:

Thu Oct 01 19:56:00 2026 0 localhost 18 /home/users/kunde1/www/agentur/upload.txt b _ i r kunde1_ftp1 ftps 0 * c

Schritt 4: Klartext wird abgelehnt

Derselbe Aufruf ohne --ssl-reqd versucht eine unverschlüsselte Anmeldung. ProFTPD lehnt schon den Benutzernamen ab:

curl -sv --netrc-file /root/ftp.netrc ftp://127.0.0.1/
< 220 ProFTPD Server (server.example.de FTP Server) [::ffff:127.0.0.1]
> USER kunde1_ftp1
< 550 SSL/TLS required on the control channel
curl exit: 67

Zum Vergleich haben wir die Option im Admin-Bereich ausgeschaltet. Nach dem Neustart von ProFTPD stand TLSRequired off in tls.conf, und dieselbe Anmeldung ging ohne Verschlüsselung durch:

> USER kunde1_ftp1
< 331 Password required for kunde1_ftp1
< 230 User kunde1_ftp1 logged in

Ein Mitschnitt auf der Loopback-Schnittstelle zeigte dabei Benutzername und Passwort im Klartext. Das Passwort haben wir im Protokoll geschwärzt:

mitgeschnitten auf lo: USER kunde1_ftp1
mitgeschnitten auf lo: PASS [Klartext-Passwort, 18 Zeichen, geschwärzt]

Danach haben wir die Option wieder eingeschaltet, und die Anmeldung ohne TLS scheiterte erneut mit 550. Lassen Sie die Option deshalb aktiv.

Verifizieren: grep -n TLSRequired /etc/proftpd/tls.conf muss on zeigen.

Schritt 5: Verzeichnisgrenze prüfen

ProFTPD sperrt jeden Benutzer in sein Home-Verzeichnis, KeyHelp setzt dafür in proftpd.conf die Zeile DefaultRoot ~. Für den FTP-Benutzer ist das sein Stammverzeichnis. Wir haben drei Ausbruchsversuche unternommen:

curl -sv --ssl-reqd -k --netrc-file /root/ftp.netrc ftp://127.0.0.1/ -Q "CWD .." -Q "PWD"
curl -sv --ssl-reqd -k --netrc-file /root/ftp.netrc ftp://127.0.0.1/ -Q "CWD /home/users/kunde1/www"
curl -s --ssl-reqd -k --netrc-file /root/ftp.netrc ftp://127.0.0.1/%2Fetc/passwd -o /tmp/p
  • CWD .. blieb im Wurzelverzeichnis: 257 "/" is the current directory.
  • Der absolute Pfad existierte für den Benutzer nicht: 550 /home/users/kunde1/www: No such file or directory.
  • /etc/passwd war nicht erreichbar (curl-Exitcode 9).

Hinweis zum Nachtesten: curl entfernt ../ aus URLs schon vor dem Senden. Ein Aufruf wie ftp://127.0.0.1/../ prüft die Grenze deshalb nicht, schicken Sie CWD .. wie oben als eigenes Kommando. Im Formular haben wir zusätzlich das Stammverzeichnis /../files/ eingegeben. KeyHelp nahm es an, machte daraus aber /home/users/kunde1/./files/, also einen Ordner innerhalb des Kundenkontos.

Verifizieren: Melden Sie sich mit dem neuen Benutzer an. Das FTP-Programm darf als oberste Ebene nur den Inhalt des Stammverzeichnisses zeigen.

Typische Fehler

„550 SSL/TLS required on the control channel“. Das FTP-Programm verbindet sich unverschlüsselt. Stellen Sie im FTP-Programm „FTP über TLS“ im expliziten Modus ein, Port 21, wie es auch die Verbindungsdaten in KeyHelp angeben.

„SSL certificate problem: self-signed certificate“. Das FTP-Zertifikat ist selbst signiert. Prüfen Sie den Fingerabdruck und bestätigen Sie das Zertifikat im FTP-Programm.

Keine Verbindung mit implizitem FTPS. Der Testserver bot nur den expliziten Modus auf Port 21. Auf Port 990 lauschte kein Dienst, curl mit ftps:// scheiterte mit Exitcode 7.

Ordner fehlt direkt nach dem Anlegen. KeyHelp legt das Stammverzeichnis nicht sofort an. Warten Sie einen Moment, im Test war es bei der Kontrolle 48 Sekunden später vorhanden.

Häufige Fragen

Gehören hochgeladene Dateien dem Kunden?

Ja, im Dateisystem. Die Testdatei gehörte kunde1:kunde1, weil der FTP-Benutzer mit UID 5001 des Kunden arbeitet. Die Verzeichnisliste per FTP zeigte als Besitzer dagegen kunde1_ftp1. Im Dateisystem gehören die Dateien des Dienstleisters damit dem Kundenkonto.

Kann sich der Kunde selbst per FTP anmelden?

Ja. Laut Hinweis auf der Seite können Kunden „jederzeit einfach Ihr Haupt-FTP-Konto verwenden“, mit den Anmeldedaten des Control Panels. Im Test sah dieser Zugang das gesamte Home-Verzeichnis mit files, logs, tmp und www. Für Dienstleister ist ein eigener FTP-Benutzer deshalb die bessere Wahl.

Ist SFTP dasselbe?

Nein. SFTP läuft über SSH und ist ein eigenes Thema. ProFTPD lädt zwar das Modul mod_sftp, die zugehörige sftp.conf war im Test aber leer, auf Port 22 lauschte sshd, auf Port 2222 kein Dienst. FTP-Benutzer von KeyHelp sind keine Systembenutzer.

Wie entziehe ich einem Dienstleister den Zugang?

In der Liste „FTP-Benutzer“ über das Löschen-Symbol in der Zeile. Das haben wir nicht getestet, ebenso wenig, ob die Dateien des Benutzers danach erhalten bleiben.

Testumfang

Wir haben in KeyHelp 26.1.1 einen FTP-Benutzer mit eigenem Stammverzeichnis angelegt und mit curl auf dem Server Anmeldung, Upload, Klartext-Ablehnung und drei Ausbruchsversuche geprüft. Auffällig: Ohne TLS-Zwang gingen Benutzername und Passwort im Klartext über die Verbindung, mitgeschnitten auf der Loopback-Schnittstelle. Nicht geprüft wurden Verbindungen von außen, FileZilla und das Löschen von Benutzern. Lassen Sie „Nur SSL/TLS-gesicherte Verbindungen zulassen“ aktiv.

Fazit

Ein eigener FTP-Benutzer pro Dienstleister ist in KeyHelp mit wenigen Angaben angelegt und hält im Test, was er verspricht: ProFTPD sperrt ihn in sein Stammverzeichnis, alle Ausbruchsversuche scheiterten. Die Verschlüsselung erzwingt der Admin mit einem einzigen Haken, der ab Werk gesetzt war. Prüfen Sie nach Updates oder Umzügen mit einem Aufruf ohne TLS, ob der Server die Anmeldung weiterhin mit 550 ablehnt.

Weiterführende Anleitungen und Quellen

KeyHelpFTPFTPSProFTPDTLSWebhosting