SFTP (Secure File Transfer Protocol) ist eine sichere Methode, Dateien zwischen Servern und Clients zu übertragen. Es basiert auf SSH und bietet verschlüsselte Übertragung, Authentifizierung per Passwort oder Key, sowie die Möglichkeit, Benutzerrechte granular zu steuern. Für IT-Einsteiger, Studierende und Junior Network Engineers ist es essenziell zu verstehen, wie SFTP korrekt eingerichtet und betrieben wird, um Datensicherheit im Linux-Serverbetrieb zu gewährleisten.
SSH als Grundlage für SFTP
SFTP nutzt das SSH-Protokoll (Secure Shell) als Transportmechanismus. Daher müssen zunächst die SSH-Dienste korrekt installiert und konfiguriert sein. Die Standardpakete auf den meisten Linux-Distributionen sind OpenSSH-Server und -Client.
# Installation auf Debian/Ubuntu
sudo apt update
sudo apt install openssh-server
Installation auf RHEL/CentOS/AlmaLinux/Rocky Linux
sudo dnf install openssh-server
Dienst starten und aktivieren
sudo systemctl enable --now sshd
SFTP-Benutzer anlegen
Für SFTP empfiehlt es sich, dedizierte Benutzer oder Gruppen zu erstellen, um Zugriffsrechte klar zu trennen. Sensible Verzeichnisse können so vom Rest des Systems isoliert werden.
# Gruppe für SFTP-Benutzer erstellen
sudo groupadd sftpusers
Benutzer anlegen und der Gruppe zuweisen
sudo useradd -m -g sftpusers -s /sbin/nologin sftpuser
Passwort setzen
sudo passwd sftpuser
Chroot-Verzeichnis für SFTP setzen
Mit Chroot können Benutzer auf ein bestimmtes Verzeichnis beschränkt werden, sodass sie keine anderen Teile des Dateisystems sehen oder darauf zugreifen können.
# Beispiel: Verzeichnis für Benutzer erstellen
sudo mkdir -p /srv/sftp/sftpuser/uploads
sudo chown root:root /srv/sftp/sftpuser
sudo chmod 755 /srv/sftp/sftpuser
Unterverzeichnis für Schreibrechte
sudo chown sftpuser:sftpusers /srv/sftp/sftpuser/uploads
SSH-Konfiguration für SFTP einschränken
Die Datei /etc/ssh/sshd_config muss angepasst werden, um Benutzer auf SFTP zu beschränken und Shell-Zugriff zu verhindern.
# Beispielkonfiguration am Ende von /etc/ssh/sshd_config
Match Group sftpusers
ChrootDirectory /srv/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
Nach Änderungen den SSH-Dienst neu starten:
sudo systemctl restart sshd
Test der SFTP-Verbindung
Nach der Einrichtung sollte die Verbindung vom Client getestet werden:
# Verbindung zum Server herstellen
sftp sftpuser@server_ip
Dateien hochladen
put localfile.txt
Dateien herunterladen
get remotefile.txt
Key-basierte Authentifizierung einrichten
Für höhere Sicherheit ist die Authentifizierung per SSH-Key empfehlenswert. Passwortbasierter Zugriff kann optional deaktiviert werden.
# Key auf Client erzeugen
ssh-keygen -t ed25519
Public Key auf Server kopieren
ssh-copy-id sftpuser@server_ip
Optional Passwortauthentifizierung deaktivieren
Match Group sftpusers
PasswordAuthentication no
Logging und Monitoring
Für den produktiven Betrieb ist es wichtig, SFTP-Zugriffe zu protokollieren. Die meisten Logs werden in /var/log/auth.log oder /var/log/secure gespeichert:
# Aktuelle SFTP-Zugriffe prüfen
sudo journalctl -u sshd | grep sftp
Best Practices für SFTP im Serverbetrieb
- Dedizierte Benutzer und Gruppen für SFTP anlegen
- Chroot-Verzeichnisse verwenden, um Benutzer zu isolieren
- SSH-Key-Authentifizierung bevorzugen und Passwortlogin deaktivieren
- Logging aktivieren und regelmäßig überprüfen
- Minimalrechte für Verzeichnisse setzen: Root für Chroot, Benutzer nur für Uploads
- Regelmäßig Updates für OpenSSH-Pakete durchführen
Zusammenfassung
Die Einrichtung von SFTP auf Linux-Servern erfordert die korrekte Konfiguration von SSH, dedizierten Benutzern, Chroot-Verzeichnissen und Berechtigungen. Durch Key-basierte Authentifizierung, Logging und Best Practices wird eine sichere und kontrollierte Dateiübertragung gewährleistet, die für Unternehmens- und Homelab-Umgebungen gleichermaßen geeignet ist.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

