Rsync User, Berechtigungen - Transfer auf Ziel funktioniert nicht

  • Hallo,


    ich möchte div. Dateien von einem Server (Quelle) auf einen anderen Server (Ziel) mit Rsync kopieren. Ziel ist es, ohne Eingabe von PWs die Daten zu kopieren.


    Dazu habe ich auf Quelle mit

    Code
    ssh-keygen -t rsa -b 4096 -C "rsyncuser"

    einen SSH Key angelegt (ohne PW) und den Publickey auf Ziel in

    Code
    /home/andereruser/.ssh/authorized_keys

    kopiert.


    Verbindung klappt aber nicht mit

    Code
    ssh -i /home/andereruser/.ssh/id_rsa_test -p 1234 rsyncuser@123.123.123.123
    rsyncuser@123.123.123.123: Permission denied (publickey).

    Hiermit klappt es (andereruser ist auf beiden Servern vorhanden, sind "gleich konfiguriert":

    Code
    ssh -i /home/andereruser/.ssh/id_rsa_test -p 1234 andereruser@123.123.123.123


    Zusätzlich habe ich auf Ziel einer User rsyncuser angelegt

    Code
    sudo adduser --disabled-password rsyncuser
    usermod -aG sudo rsyncuser

    und auf Ziel in

    Code
    etc/ssh/sshd_config

    eingtragen:

    Code
    AllowUsers andereruser rsyncuser
    
    Match User rsyncuser
        ForceCommand rsync --server
        AllowTcpForwarding no
        X11Forwarding no
        PermitEmptyPasswords yes


    Auf Ziel ist bisher nur login von "andereruser" erlaubt, kein root, keine leeren Passwörter, nur Login mit key.


    Fragen:

    Passt das so? Oder hab ich mir jetzt irgendein Loch aufgerissen?

    Warum bekomme ich keine Verbindung per SSH zu Ziel?

    Hab ich was übersehen bezgl. dem neuen User auf Ziel oder was falsch gemacht?



    Wäre super, wenn jemand weiterhelfen könnte.


    Danke

  • Hast du deinen öffentlichen Schlüssel auch in 123.123.123.123:/home/rsyncuser/.ssh/authorized_keys eingetragen!?

    Ok. danke. Vermutlich schon mal der 1. Fehler: Hab den natürlich nur


    Code
    /home/andereruser/.ssh/authorized_keys

    deswegen klappt hier auch die Verbindung.


    Die restlichen Anpassungen wären ok? Oder braucht es die dann gar nicht?

  • Hier würdest du leere Passwörter zulassen...

    Code
    PermitEmptyPasswords yes

    ... hast aber zum Glück nur Authentifizierung per public key authentication zugelassen. Evtl ist der Parameter PasswordAuthentication no gesetzt. Deswegen steht da:

    Code
    rsyncuser@123.123.123.123: Permission denied (publickey).

    Was so auch gut ist :)

  • Geht leider immer noch nicht, obwohl ich den Public Key auf Ziel in /home/rsyncuser/.ssh/authorized_keys eingetragen


    Verbindung klappt nicht mit:

    Code
    ssh -i /home/andereruser/.ssh/id_rsa_test -p 1234 rsyncuser@123.123.123.123
    
    rsync error: syntax or usage error (code 1) at main.c(1850) [Receiver=3.2.7]
    Connection to 123.123.123.123 closed.


    Verbindung klappt:


    Code
    ssh -i /home/andereruser/.ssh/id_rsa_test -p 1234 andereruser@123.123.123.123
  • Interessent : Ich würde vermuten, dass die Fehlermeldung mit ForceCommand rsync --server zusammenhängt (Binary nicht im Pfad gefunden?) und diese Zeile erst einmal auskommentieren bzw. allgemein die Einstellungen von rsyncuser und andereruser zunächst angleichen und danach die Änderungen schrittweise wieder einführen.

    VServer IOPS Comparison Sheet: https://docs.google.com/spreadsheets/d/1w38zM0Bwbd4VdDCQoi1buo2I-zpwg8e0wVzFGSPh3iE

    Like 1
  • OK. Probiere ich.


    Brauch ich denn den Block


    Code
    Match User rsyncuser
    ForceCommand rsync --server
    AllowTcpForwarding no
    X11Forwarding no

    überhaupt? Ist ja gleich wie bei anderer User.


    Was ich nur einstellen will ist, das rsyncuser über SSH halt nur rsync und sonst nix machen kann. Ob das hier der richtige Ort und die richtige Vorgehenseise ist, ist eine andere Frage.

  • Hi,

    wenn du rsync kopieren willst, müsste es so aussehen.


    rsync -avu -e 'ssh -p 1234 -i /home/andereruser/.ssh/id_rsa_test' /path/to/quelle andereruser@123.123.123.123:/path/to/ziel


    So läuft es bei mit.

  • Hab den Block jetzt komplett weggelassen:


    Code
    Match User rsyncuser
    ForceCommand rsync --server
    AllowTcpForwarding no
    X11Forwarding no

    Verbindung geht mit:

    Code
    rsync -avz -e "ssh -i /home/andereruser/.ssh/id_rsa_test -p 4567" /home/andereruser/test rsyncuser@123.123.123.123:/home/rsyncuser/test


    Jetzt bleibt nur noch die Frage:

    Wie und wo kann man einstellen, dass rsyncuser über SSH halt nur rsync und sonst nix machen kann.


    Gibts da Tipps?


    Danke

  • Wie und wo kann man einstellen, dass rsyncuser über SSH halt nur rsync und sonst nix machen kann.

    Gibts da Tipps?

    Zu ForceCommand gibt es hier eine Erläuterung, und direkt darüber wird eine PAM-basierte Alternative genannt (das genannte Shell-Script sollte natürlich vom Nutzer nicht editierbar sein, logisch).

    VServer IOPS Comparison Sheet: https://docs.google.com/spreadsheets/d/1w38zM0Bwbd4VdDCQoi1buo2I-zpwg8e0wVzFGSPh3iE

    Edited once, last by m_ueberall ().

  • Wäre das dann das richtige Kommando in der authorized_keys:


    command=“rsync –server”,no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding rsa .....


    und dann noch

    visudo

    Code
    rsyncuser ALL = NOPASSWD: /usr/bin/rsync 


    Der Aufruf wäre dann:

    Code
    rsync --rsync-path="sudo rsync" -avz -e "ssh -i /home/andereruser/.ssh/id_rsa_test -p 4567" /home/andereruser/test rsyncuser@123.123.123.123:/home/rsyncuser/test


    Hab ich das so korrekt verstanden?

  • Ja das hab ich auch ausgeführt.

    Nur leider halt


    Code
    cat ssh-command-log 
    cat: ssh-command-log: No such file or directory

    Das ist das Skript:

    Bash
    #!/bin/sh
    if [ -n "$SSH_ORIGINAL_COMMAND" ]
    then
      echo "`/bin/date`: $SSH_ORIGINAL_COMMAND" >> $HOME/ssh-command-log
      exec $SSH_ORIGINAL_COMMAND
    fi
    :~$ vi .ssh/authorized_keys
    command="/home/rsyncuser/logssh.sh" ssh-rsa AAAA....


    Auf dem Server Quelle dann den rsync laufen lassen

  • Danke, das mit dem Skript passt jetzt. Entsprechendes Kommando habe ich in der authorized_keys hinzugefügt.


    Der Aufruf klappt allerdings immer noch nicht:


    Code
    rsync --rsync-path="sudo rsync" -avz -e "ssh -i /home/andereruser/.ssh/id_rsa_test -p 4567" /home/andereruser/test rsyncuser@123.123.123.123:/home/rsyncuser/test


    Klappt nur so:


    Code
    rsync "ssh -i /home/andereruser/.ssh/id_rsa_test -p 4567" /home/andereruser/test rsyncuser@123.123.123.123:/home/rsyncuser/test