rsync als anderer Benutzer

rsync als anderer Benutzer

wenn ich den folgenden Befehl als normaler Benutzer ausführe, funktioniert alles ordnungsgemäß:

fabio@myclient:~$ rsync -rv myserver:~/backup /home/fabio/backup/

Es funktioniert ohne Benutzerinteraktion, aber ich muss es in einem als Root ausgeführten Skript ausführen, also habe ich Folgendes versucht:

root@myclient:~# sudo -u fabio rsync -rv myserver:~/backup /home/fabio/backup/

und auch versucht:

root@myclient:~# su - fabio -c "rsync -rv myserver:~/backup /home/fabio/backup"

beides funktioniert, aber fragen Sie mich nach einer „Passphrase für den Schlüssel“. Kann ich das vermeiden?

Antwort1

Die „Passphrase für den Schlüssel“ kommt wahrscheinlich von SSH und nicht von rsyncoder sudo, das nach der Passphrase zum Entsperren Ihres privaten SSH-Schlüssels fragt.

Da ich Ihnen wirklich nicht empfehlen würde, einen Schlüssel ohne Passphrase zu verwenden, sollten Sie die Umstände berücksichtigen, unter denen das Skript als Root ausgeführt wird. Wird das Skript immer irgendwann nach Ihrer Anmeldung als Root ausgeführt? Ist es für Sie in Ordnung, Ihre Passphrase einmal irgendwann nach der Anmeldung einzugeben?

Wenn dies der Fall ist, empfehle ich die Verwendung von etwas wiekeychainum sicherzustellen, dass der als Ihr Benutzer gestartete SSH-Agent vom Skript verwendet wird, während es als Root ausgeführt wird. Sie können dies so einrichten, dass Sie die Passphrase nur einmal irgendwann nach der Anmeldung eingeben müssen und bei zukünftigen Aufrufen keine Interaktion erforderlich ist.

Wenn dies nicht der Fall ist und das Skript autonom und ohne interaktive Authentifizierung Ihrerseits ausgeführt werden muss, sollten Sie ein Schlüsselpaar speziell für das Sicherungsskript generieren und dann dessen Möglichkeiten einschränken, indem Sie es entweder auf der Remote-Seite als einen anderen Benutzer authentifizieren lassen (also nicht fabio, sondern beispielsweise fabio-backup) oder indem Sie es auf der Remote-Seite mit dem command=Argument in Ihrer .authorized_keysDatei einschränken (das ist allerdings etwas komplizierter, da Sie sich dafür die SSH_ORIGINAL_COMMANDUmgebungsvariable ansehen müssen; sieheautorisierte Schlüssel(5)für Details)

Antwort2

Ihr privater SSH-Schlüssel ist durch eine Passphrase geschützt. Wenn Sie es manuell als (angemeldeter) Benutzer ausführen, wird der SSH-Agent verwendet, in dem Sie einst den Passphrase-Schlüsselspeicher gespeichert haben.

Wenn es jedoch unbeaufsichtigt ausgeführt wird, geschieht dies nicht – schließlich ist der Benutzer möglicherweise nicht einmal angemeldet (und sein Schlüsselspeicher ist daher nicht verfügbar). Damit es immer funktioniert, müssen Sie die Passphrase aus Ihrem privaten SSH-Schlüssel entfernen (wenn Sie ssh-keygen -pals Benutzer angemeldet sind fabio– drücken Sie einfach die Eingabetaste für eine neue Passphrase und sie sollte entfernt werden).

Kleiner Sicherheitshinweis: Wenn der private Schlüssel nicht durch eine Passphrase geschützt ist, fabiokann jeder, der Zugriff auf das Konto erhält, ihn auch per SSH mit anderen Hosts verbinden, die diesen Schlüssel zulassen, ohne zuerst die Passphrase des Benutzers abfangen zu müssen.)

verwandte Informationen