Aktionen

Ubuntu Server sicheres SFTP für Uploads einrichten

Aus znilwiki

Changelog:

  • 14.09.2026 erste Version

Vorwort

Nachfolgend beschreibe ich wie ich einen SFTP-Server unter Ubuntu 24.04 aufgesetzt habe. Dieser sollte Ziel für automatisierte Uploads sein.
Ich habe versucht das System bestmöglich abzusichern. Unter anderem ist im Echtsystem der Zugriff auf bestimmte Gegenstellen beschränkt, ich nutze aber auch die Ubuntu-Firewall in diesem Beispiel.
Zudem verwende ich einen extra Port und nicht den Standard-Port 22, die Anmeldung erfolgt nicht per Passwort sondern per SSH-Public-Key


Voraussetzungen

Ein installiertes Ubuntu Server 24.04.
Meines ist nach meiner Anleitung / Vorlage https://znil.net/index.php?title=Vorlage:Installation-Ubuntu-2404 installiert worden.
Sollte auch mit der Nicht-Server Variante sowie neueren oder älteren Versionen.


Benutzer und Zielverzeichnisse anlegen

# Upload-Gruppe "sftp-uploaders"
sudo groupadd sftp-uploaders
# Benutzer "mytestuser" ohne Shell anlegen
sudo useradd -m -g sftp-uploaders -s /bin/false mytestuser

Jetzt die Chroot-Ordnerstruktur

# Chroot-Basis (MUSS root gehören und 755 Rechte haben)
sudo mkdir -p /var/sftp/mytestuser
sudo chown root:root /var/sftp/mytestuser
sudo chmod 755 /var/sftp/mytestuser

Und den eigentlichen Upload-Ordner des Benutzers

# Eigentlicher Upload-Ordner
sudo mkdir -p /var/sftp/mytestuser/incoming
sudo chown mytestuser:sftp-uploaders /var/sftp/mytestuser/incoming
sudo chmod 750 /var/sftp/mytestuser/incoming

Die Uploads des Benutzers landen dann später also im Pfad

/var/sftp/mytestuser/incoming



OpenSSH konfigurieren

Nein, wir müssen SFTP nicht extra installieren, zu OpenSSH gehört ja auch der Befehl scp, und der nutzt unten drunter schon länger SFTP.
SFTP nutzt ja auch den gleichen Port wie SSH, also ab Werk Port 22 TCP.

Zusätzlichen Port aktivieren

Ich möchte später nicht Port 22 sondern Port 2222 verwenden:

sudo nano /etc/ssh/sshd_config

Da gibt es eine auskommentierte Zeile mit

#Port 22

die ändern wir wie folgt ab:

Port 22
Port 2222


Der Port muss noch in der Firewall aktiviert werden:

sudo ufw allow 2222/tcp

Konfigurationsdatei erstellen

Nun erstellen wir eine neue Konfigurationsdatei für OpenSSH per

sudo nano /etc/ssh/sshd_config.d/sftp-jail.conf

mit folgendem Inhalt:

# Regeln nur für Zugriffe über Port 2222 anwenden
Match LocalPort 2222 Group sftp-uploaders
    ChrootDirectory /var/sftp/%u
    ForceCommand internal-sftp -u 0027
    AllowTcpForwarding no
    X11Forwarding no
    PasswordAuthentication no
    AuthorizedKeysFile /etc/ssh/authorized_keys/%u

Durch die Zeile ForceCommand internal-sftp -u 0027 wird explizit nur SFTP erlaubt!