Files
Jailed/README.md

107 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Jailed
# SFTP mit Docker (atmoz/sftp)
Dieses Repository stellt einen einfachen SFTPDienst mit dem DockerImage **atmoz/sftp** bereit. Der Container chrootet Benutzer in ihr Home und erlaubt Schreibzugriff direkt im HomeVerzeichnis. Authentifizierung erfolgt per SSHKey.
---
## Inhalt des Repositories
- **docker-compose.yml** — startet den SFTPContainer
- **users.conf** — Benutzerdefinitionen für atmoz/sftp
- **./data/test/** — gemountetes Home des Benutzers `test` (auf dem Host)
---
## Beispielkonfiguration
**docker-compose.yml**
```yaml
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 KeyOnly Authentifizierung.
- **1000:100** sind **UID:GID** des Benutzers auf dem Host; passe diese Werte an.
- **.** bedeutet Home ist `/home/test` (kein zusätzliches UploadVerzeichnis).
---
## Installation und Start
1. **Verzeichnisstruktur anlegen**
```bash
mkdir -p ./data/test/.ssh
```
2. **Public Key des Clients in authorized_keys kopieren**
```bash
cp /pfad/zum/id_ed25519.pub ./data/test/.ssh/authorized_keys
```
3. **Rechte und Besitz setzen (Linux oder WSL empfohlen)**
```bash
sudo chown -R 1000:100 ./data/test
sudo chmod 700 ./data/test/.ssh
sudo chmod 600 ./data/test/.ssh/authorized_keys
```
4. **Container starten**
```bash
docker compose up -d
```
5. **Verbindungstest vom Client**
```bash
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`/home` darf nicht komplett vom Host überschrieben werden. Deshalb mounten wir nur `/home/test`.
- Auf **Linux/WSL** funktionieren `chown` und `chmod` wie oben gezeigt.
- Auf **Windows ohne WSL** wirken `chown`/`chmod` nicht auf NTFS; in diesem Fall empfiehlt sich **Docker mit WSL2** als Backend oder die Nutzung eines DockerVolumes statt eines HostBindMounts. Ohne WSL kann KeyOnly Auth problematisch sein.
---
## Troubleshooting
- **bad ownership or modes for chroot directory** → Prüfe, dass `/home` im Container nicht vom Host überschrieben wird und dass `./data/test` die richtige **UID:GID** besitzt.
- **Port bereits belegt** → Ändere die Portzuordnung in `docker-compose.yml` oder prüfe mit `netstat`/`ss`, welcher Prozess den Port nutzt.
- **Key wird abgelehnt** → Rechte von `.ssh` und `authorized_keys` prüfen; UID/GID in `users.conf` mit `ls -n ./data/test` vergleichen.
- **Logs prüfen**
```bash
docker logs sftp
```
---
## Sicherheit und Best Practices
- Verwende **ed25519** Schlüssel für Clients.
- Öffne den SFTPPort nur für notwendige IPs oder nutze FirewallRegeln.
- Entferne unnötige PasswortAuthentifizierung in Produktion.
- Überwache ContainerLogs und setze ggf. Fail2Ban oder NetzwerkACLs ein.