Beim Push-Verfahren wird, wenn mit scp oder rsync kopiert wird, eine Login-Shell vorausgesetzt. Wenn dies aus Sicherheitsgründen nicht gewünscht ist bzw. wg. Einsatz von Windows nicht möglich ist, können Sie auch sftp nutzen, dies wird in modernen ssh-Servern mitgeliefert und bietet ebenfalls verschlüsselten Datentransfer. Zur Einrichtung des Servers:
Der SSH-Dienst wird wie folgt konfiguriert (am Beispiel Ubuntu Linux 22.04 LTS) mit dem SFTP-Verzeichnis /home/sftp/-benutzername:
In der Datei /etc/ssh/sshd_config die Zeile auskommentieren:
#Subsystem sftp /usr/lib/openssh/sftp-server
und stattdessen:
Subsystem sftp internal-sftp Match Group sftponly ChrootDirectory /home/sftp/%u ForceCommand internal-sftp AllowTcpForwarding no
Dann legen Sie die Gruppe "sftponly" an:
groupadd sftponly und dann den Unix-User an, und geben ihm die Gruppe "sftponly". Hier ein Script: #!/bin/sh SFTPUSERNAME=$1 mkdir -p /home/sftp/$SFTPUSERNAME useradd -b /home/sftp -s /bin/false -G sftponly $SFTPUSERNAME chown root:root /home/sftp/$SFTPUSERNAME chmod 755 /home/sftp/$SFTPUSERNAME mkdir -p /home/sftp/$SFTPUSERNAME/incoming chown $SFTPUSERNAME:sftponly /home/sftp/$SFTPUSERNAME/incoming
Danach legen Sie mit
passwd $SFTPUSERNAME
ein Passwort fest.
Der User kann sich dann nicht mehr mit ssh einloggen, nur noch mit sftp, und landet beim Login in /home/$KENNUNG, in einem "chroot-Käfig", und der User kann mit SFTP in den Ordner "incoming" schreiben. Zum Testen geben Sie ein:
sftp $KENNUNG@-Host-
Wenn beim SFTP Login die Meldung kommt:
client_loop: send disconnect: Broken pipe
müssen Sie darauf achten dass das Home-Verzeichnis des Users nicht dem User gehört, sondern root.
Wenn der Login klappt, können Sie nach dem oben beschriebenen Verfahren die Passworteingabe durch PublicKey-Authentifizierung ersetzen.