Per SFTP können sicher Daten auf einen Server geschoben werden. Jedoch möchte man in der Regel nicht, dass der SFTP-Benutzer sich an der Konsole einloggen kann, oder auf andere Verzeichnisse als sein eigenes zugreifen darf. Seit OpenSSH 5 ist in den SSH-Daemon direkt SFTP-Funktionalität eingebaut, man benötigt also keine externe Serversoftware mehr. Ein beschränkter Benutzer für SFTP kann so eingerichtet werden:
User für SFTP anlegen:
# User anlegen adduser sftp # Kein Shell-Zugriff usermod -s /bin/false sftp # Für chroot muss das Userverzeichnis root gehören und darf nicht world/group writeable sein chown root:root /home/sftp chmod 755 /home/sftp # Der User darf nicht direkt ins chroot /home/sftp schreiben. Uploadverzeichnis anlegen mkdir /home/sftp/upload chown sftp:sftp /home/sftp/upload
sshd Config anpassen:
#/etc/ssh/sshd_config Subsystem sftp internal-sftp # Auskommentieren: #Subsystem sftp /usr/lib/openssh/sftp-server Match User sftp ChrootDirectory /home/%u ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no
SSHD neu starten:
/etc/init.d/sshd restart
Debuggen:
tail -f /var/log/auth.log
Fallstricke:
Auch übergeordnete Verzeichnisse, also / und /home müssen root gehören und die Rechte müssen auf 755 gesetzt sein.