Dateien schnell „mal eben“ per Mail zu verschicken, passiert im Admin-Alltag ständig. In der IT ist das aber oft genau der falsche Weg: Anhänge landen in Postfächern, werden weitergeleitet, bleiben in Backups hängen und sind schwer zu kontrollieren. Wenn Sie stattdessen einen sauberen, auditierbaren und verschlüsselten Weg für Dateiübertragungen brauchen, ist SFTP meist die pragmatischste Lösung.
Dieser Beitrag ist eine praxisnahe Erklärung und ein howto, wie Sie einen SFTP Server auf Ubuntu mit OpenSSH einrichten und sinnvoll konfigurieren: mit Chroot-Jails, Schlüssel-Login, Rechtekonzept, Logging und typischen Stolperfallen. Fokus ist der Betrieb im professionellen Umfeld mit klarer Sicherheit.
Was ist SFTP?
SFTP (SSH File Transfer Protocol) ist ein Dateitransfer-Protokoll, das über eine SSH-Verbindung läuft. Es ist nicht „FTP mit TLS“, sondern ein eigenes Protokoll, das den SSH-Transport nutzt. Praktisch heißt das:
- Verschlüsselung und Authentifizierung kommen direkt aus SSH.
- Sie brauchen in der Regel nur einen Port (standardmäßig TCP/22).
- Benutzerverwaltung, Schlüssel, Logging und Härtung laufen über den OpenSSH-Stack.
SFTP ist damit im Unternehmensbetrieb oft einfacher zu standardisieren als klassische FTP-Setups.
Warum SFTP in der IT oft besser ist als Dateiversand per Mailserver
Viele Datei-Workflows laufen noch über den Mailserver: „Schick mir das Logfile“, „Hier ist das Backup“, „Anbei das Zertifikat“. Aus Betriebssicht führt das regelmäßig zu Problemen:
- Große Anhänge sprengen Limits, verursachen Warteschlangen oder Quotas.
- Dateien verteilen sich unkontrolliert auf Postfächer, Clients und Archivsysteme.
- Zugriffskontrolle ist grob (Mailbox-Rechte statt Dateirechte).
Mit SFTP können Sie Dateitransfers sauber trennen: definierte Benutzer, definierte Verzeichnisse, nachvollziehbare Zugriffe, klare Aufbewahrungsregeln. Wenn Sie ohnehin bereits SSH für Administration nutzen, ist SFTP meist ein kleiner Zusatzschritt.
Architekturentscheidung: „SFTP-only“ statt Shell-Zugriff
Für einen Transfer-Server wollen Sie oft genau eins: Upload/Download, aber keinen interaktiven Shell-Zugriff.
OpenSSH bringt dafür einen eingebauten SFTP-Subsystem-Server mit. In der Praxis setzen Sie dann auf:
- Dedizierte SFTP-User (oder Gruppen)
- ChrootDirectory (User sehen nur ihr Zielverzeichnis)
- ForceCommand internal-sftp (keine Shell)
- Schlüssel-Login (und optional Passwort-Login aus)
So bleibt die Angriffsfläche klein, ohne ein zusätzliches SFTP-Serverprodukt zu betreiben.
Voraussetzungen auf Ubuntu
- Ubuntu Server mit installiertem OpenSSH-Server
- Root-/sudo-Zugriff
- Firewall-Regeln (z. B. UFW oder Perimeter-Firewall)
- Ein Plan für Benutzer, Ordnerstruktur und Rechte
Wenn OpenSSH noch fehlt, installieren Sie es:
sudo apt update
sudo apt install openssh-server
Prüfen Sie den Dienst:
sudo systemctl status ssh
Schritt 1: Benutzerkonto erstellen
sudo adduser --shell /usr/sbin/nologin USERNAME
--shell /usr/sbin/nologin verhindert, dass sich der Benutzer interaktiv am System anmelden kann.
Schritt 2: Chroot-Verzeichnis erstellen
Aufgrund der Sicherheitsanforderungen von SFTP müssen wir ein Chroot-Verzeichnis erstellen, das Besitz von root ist und nicht schreibbar für andere Benutzer. In diesem Beispiel heißt das eigentliche Document Root mia-hotel.de und sollte zur Übersichtlichkeit auch angepasst werden.
sudo mkdir -p /var/www/sftp-jail/mia-hotel.de
sudo chown root:root /var/www/sftp-jail
sudo chmod 755 /var/www/sftp-jail
Schritt 3: Bind-Mount des Webverzeichnisses
Verwenden Sie einen Bind-Mount, um das Webverzeichnis in das Chroot-Jail einzubinden:
sudo mount --bind /var/www/mia-hotel.de /var/www/sftp-jail/mia-hotel.de
Damit der Bind-Mount nach einem Neustart erhalten bleibt, fügen Sie die folgende Zeile zu /etc/fstab hinzu:
/var/www/mia-hotel.de /var/www/sftp-jail/mia-hotel.de none bind 0 0
Schritt 4: Berechtigungen anpassen
Stellen Sie sicher, dass der Benutzer USERNAME die erforderlichen Berechtigungen hat:
sudo usermod -aG www-data USERNAME
sudo chown -R www-data:www-data /var/www/mia-hotel.de
sudo chmod -R 2775 /var/www/mia-hotel.de
Das Set-GID-Bit (2) sorgt dafür, dass neu erstellte Dateien die Gruppenzugehörigkeit www-data erben.
Schritt 5: SSHD-Konfiguration anpassen
vi /etc/ssh/sshd_config
Am Ende hinzufügen:
Match User USERNAME
ChrootDirectory /var/www/sftp-jail
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
ChrootDirectory /var/www/sftp-jail legt das Chroot-Verzeichnis fest.
ForceCommand internal-sftp stellt sicher, dass nur SFTP verwendet werden kann.
Schritt 6: SSH-Dienst neu starten
sudo systemctl restart ssh
Firewall und Netzwerk: nur was Sie wirklich brauchen
SFTP läuft über SSH. Wenn Sie den Dienst nur intern brauchen, öffnen Sie Port 22 nur im internen Netz oder per VPN.
Beispiel mit UFW (wenn genutzt):
sudo ufw allow 22/tcp
sudo ufw status
Wenn Sie den SSH-Port verändern, denken Sie an Monitoring, Dokumentation und Client-Konfiguration. „Security by obscurity“ ersetzt keine saubere Härtung.
Härtung: typische Maßnahmen, die im Alltag wirklich helfen
Root-Login sperren
In /etc/ssh/sshd_config:
PermitRootLogin no
Nur moderne Authentifizierung nutzen
Wenn möglich: Schlüssel statt Passwörter. Optional können Sie zusätzlich MFA-Konzepte über zentrale Identitäten abbilden (je nach Umgebung). Einen Einstieg in sichere Authentifizierung ohne klassische Passwörter finden Sie in unserem Beitrag zur sicheren Anmeldung ohne Passwörter.
Brute-Force-Schutz
Fail2ban ist verbreitet, aber die konkrete Konfiguration hängt von Logformat und Policy ab. Wenn Sie Fail2ban einsetzen, testen Sie Sperren sauber, damit Sie sich nicht selbst aussperren.
Trennung von Diensten
Wenn auf dem Server zusätzlich ein Mailserver oder Webdienste laufen: trennen Sie Rollen. Ein SFTP-Server ist ein Eintrittspunkt ins Netz. Weniger Dienst-Mischbetrieb bedeutet weniger Seiteneffekte bei Updates und weniger Angriffsfläche.
Wenn Sie ohnehin Server in kritischen Rollen betreiben, ist kontinuierliche Überwachung Pflicht. Für Systeme wie Nextcloud sehen wir in Projekten oft, dass Security-Checks und Betriebshygiene zusammengehören, siehe z. B. Nextcloud professionell und sicher betreiben.
Häufige Fehler beim SFTP-einrichten (und wie Sie sie schnell finden)
„Connection closed“ direkt nach Login
Oft stimmt das Chroot-Verzeichnis nicht:
ChrootDirectorymuss root gehören- Rechte dürfen nicht zu offen sein (kein Schreibrecht für User auf Chroot-Root)
Prüfen:
ls -ld /sftp /sftp/sftpmax
Upload klappt nicht, obwohl Login funktioniert
Dann fehlen Schreibrechte im Unterordner:
ls -ld /sftp/sftpmax/upload
Benutzer landet nicht im Chroot
Dann greift der Match-Block nicht. Prüfen Sie:
- Gruppe stimmt (
id sftpmax) Match Group sftpuserssteht am Ende dersshd_config(Match-Blöcke sollten nach allgemeinen Regeln kommen)
„Subsystem request failed“
internal-sftp im ForceCommand löst das meist. Wenn Sie stattdessen den externen sftp-server nutzen, prüfen Sie den Pfad zum Binary.
Betrieb: Updates, Backups, Monitoring
Ein SFTP-Server ist schnell eingerichtet, aber Betrieb kostet Zeit, wenn Sie ihn ernst nehmen:
- Patchen Sie OpenSSH und das OS regelmäßig.
- Sichern Sie die Konfiguration (
/etc/ssh/sshd_config) und die relevanten Verzeichnisse. - Überwachen Sie Diskspace im Upload-Verzeichnis. Voll gelaufene Dateisysteme sind ein Klassiker.
Wenn Sie Serverumgebungen ohnehin monitoren, ist es naheliegend, SSH-Dienste, Plattenfüllstände und Systemlast einzubinden. Einen Einstieg, wie wir Monitoring im Admin-Alltag betrachten, gibt unser Artikel effizientes IT-Monitoring mit Checkmk.
SFTP als Baustein für sichere Datei-Workflows
SFTP ersetzt nicht automatisch eine Kollaborationsplattform, aber es schließt eine Lücke: „sicher Dateien ablegen und abholen“, ohne dass Anhänge den Weg über den Mailserver nehmen. Für viele IT-Teams ist genau das der pragmatische Kompromiss zwischen Aufwand und Kontrolle.
Wenn Sie SFTP in eine größere Umgebung integrieren (z. B. mit zentraler Authentifizierung, Logging, Firewall-Regeln und Monitoring), lohnt sich ein kurzer Architekturcheck, bevor es produktiv wird. Weitere praxisnahe Artikel finden Sie im Blog von ADMIN INTELLIGENCE unter https://blog.admin-intelligence.de/. Wenn Sie beim Einrichten und Absichern Unterstützung brauchen, erreichen Sie uns unkompliziert über https://www.admin-intelligence.de/kontakt/.
Wenn Sie noch weitere Fragen haben oder Unterstützung bei der Einrichtung Einichtung und konfiguration eines SFTP Servers brauchen, kontaktieren Sie uns. Wir helfen gerne!
