Jailed
SFTP mit Docker (atmoz/sftp)
Dieses Repository stellt einen einfachen SFTP‑Dienst mit dem Docker‑Image atmoz/sftp bereit. Der Container chrootet Benutzer in ihr Home und erlaubt Schreibzugriff direkt im Home‑Verzeichnis. Authentifizierung erfolgt per SSH‑Key.
Inhalt des Repositories
- docker-compose.yml — startet den SFTP‑Container
- users.conf — Benutzerdefinitionen für atmoz/sftp
- ./data/test/ — gemountetes Home des Benutzers
test(auf dem Host)
Beispielkonfiguration
docker-compose.yml
version: "3.8"
services:
sftp:
image: atmoz/sftp:latest
container_name: sftp
ports:
- "22345:22"
volumes:
- ./data/test:/home/test:rw
- ./users.conf:/etc/sftp/users.conf:ro
restart: unless-stopped
users.conf
# format: user:password[:e][:uid[:gid[:dir1[,dir2]...]]]
test:!:e:1000:100:.
Kurz erklärt
- test ist der Benutzername.
- ! als Passwort bedeutet kein Passwort gesetzt.
- e erzwingt Key‑Only Authentifizierung.
- 1000:100 sind UID:GID des Benutzers auf dem Host; passe diese Werte an.
- . bedeutet Home ist
/home/test(kein zusätzliches Upload‑Verzeichnis).
Installation und Start
- Verzeichnisstruktur anlegen
mkdir -p ./data/test/.ssh
- Public Key des Clients in authorized_keys kopieren
cp /pfad/zum/id_ed25519.pub ./data/test/.ssh/authorized_keys
- Rechte und Besitz setzen (Linux oder WSL empfohlen)
sudo chown -R 1000:100 ./data/test
sudo chmod 700 ./data/test/.ssh
sudo chmod 600 ./data/test/.ssh/authorized_keys
- Container starten
docker compose up -d
- Verbindungstest vom Client
sftp -i id_ed25519 -P 22345 test@<server-ip>
Der Benutzer kann nun Dateien direkt in seinem Home /home/test (gemountet ./data/test) erstellen und bearbeiten.
Hinweise zu Rechten und Windows
- Wichtig: Das Container‑
/homedarf nicht komplett vom Host überschrieben werden. Deshalb mounten wir nur/home/test. - Auf Linux/WSL funktionieren
chownundchmodwie oben gezeigt. - Auf Windows ohne WSL wirken
chown/chmodnicht auf NTFS; in diesem Fall empfiehlt sich Docker mit WSL2 als Backend oder die Nutzung eines Docker‑Volumes statt eines Host‑Bind‑Mounts. Ohne WSL kann Key‑Only Auth problematisch sein.
Troubleshooting
- bad ownership or modes for chroot directory → Prüfe, dass
/homeim Container nicht vom Host überschrieben wird und dass./data/testdie richtige UID:GID besitzt. - Port bereits belegt → Ändere die Portzuordnung in
docker-compose.ymloder prüfe mitnetstat/ss, welcher Prozess den Port nutzt. - Key wird abgelehnt → Rechte von
.sshundauthorized_keysprüfen; UID/GID inusers.confmitls -n ./data/testvergleichen. - Logs prüfen
docker logs sftp
Sicherheit und Best Practices
- Verwende ed25519 Schlüssel für Clients.
- Öffne den SFTP‑Port nur für notwendige IPs oder nutze Firewall‑Regeln.
- Entferne unnötige Passwort‑Authentifizierung in Produktion.
- Überwache Container‑Logs und setze ggf. Fail2Ban oder Netzwerk‑ACLs ein.
Description
Ein docker container der zugang zu einem definierten ordner per ssh oder sftp erlaubt.