Passwortloses Rsync über SSH ohne Schlüsselauthentifizierung

Passwortloses Rsync über SSH ohne Schlüsselauthentifizierung

Ich möchte einen RSync-Job einrichten, der eine Verbindung über SSH herstellt.

Ich habe meinen Computer (backup@myhost) und den Remote-Host (test@remhost) und muss den Ordner ~/something mit seinem gesamten Inhalt sichern. Der SSH-Benutzer test hat nur Lesezugriff auf alle Dateien und Ordner im Ordner ~/. Ich möchte rsync verwenden, um den Ordner test@remhost:~/something in den Ordner backup@myhost:~/bak zu kopieren.

Zu diesem Zweck verwende ich den folgenden Befehl über BASH auf Ubuntu 11.10 (Oneiric):

rsync -avz -e ssh test@remhost:~/something/ ~/bak/

Nach dem Drücken der Eingabetaste erhalte ich Folgendes:

test@remhost's password:

Ich gebe das Passwort ein und rsync funktioniert.

Ich möchte, dass der obige Befehl das Passwort automatisch eingibt und als Parameter übergibt oder es automatisch eingibt und den Job startet.

Ich habe versucht, es auszuführen rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/, aber es wird immer noch nach dem Kennwort gefragt und das ist ärgerlich.

Ich möchte nichts über irgendwelche Schlüssel (RSA, DSA oder andere) hören. Ich möchte nur einen einfachen Befehl, der mich anmeldet und die Arbeit erledigt.

BEARBEITEN:Ein mögliches Szenario könnte sein, dass die Authentifizierung mit öffentlichem Schlüssel deaktiviert ist und Sie dies nicht ändern können. Wenn Sie beispielsweise OpenSSH verwenden, benötigen Sie Root-Rechte auf dem Server, um die Datei zu bearbeiten sshd_configund hinzuzufügen PubkeyAuthentication yes.

BEARBEITEN:Das hier hat bei mir schließlich funktioniert:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/

Bitte beachten Sie, dass diese Methode nicht als sicher gilt, da das Passwort im Klartext gesendet wird und anfällig für Man-in-the-Middle-Angriffe ist. Für eine stärkere Sicherheit wird empfohlen, die Schlüsselauthentifizierung zu verwenden.

Antwort1

vielleicht versuchen sshpass.

scheint einfach zu verwenden zu sein … es ist auch über apt verfügbar.

Ich habe nach so etwas gesucht, bevor ich meine Schlüssel kopiert habe, aber da ich meinen Schlüssel sowieso schon überall habe, wo ich ihn brauche, habe ich mir nicht die Zeit genommen, dies auszuprobieren.

Beachten Sie jedoch den Haftungsausschluss in diesem Tutorial bezüglich der Sichtbarkeit Ihres Passworts.


Für alle die das machen müssen:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/

Antwort2

Eine Variante Ihrer Lösung, die sicherer vor Sicherheitsbedrohungen ist, besteht darin, Ihr Kennwort in einer Datei mit strengen Berechtigungen zu speichern und das -fFlag mit folgendem zu verwenden shpass:

sshpass -f '/home/me/.password' rsync --progress -avz -e ssh
test@remhost:~/something/ ~/bak/

Der Unterschied besteht darin, dass in der Befehlszeile bei der Auflistung der laufenden Prozesse nicht Ihr Kennwort angezeigt wird, sondern nur der Pfad zu der Datei, in der sich Ihr Kennwort befindet.

Antwort3

Ich kann mir keine Situation vorstellen, in der die Public-Key-Authentifizierung ohne Passphrase nicht die bessere Lösung für automatisierte SSH-/Rsync-Anmeldungen wäre.

Es sollte auf jeden Fall expecteinen Weg geben, das zu erreichen, was Sie tun möchten. Sie können das Passwort nicht an ssh weiterleiten, aber das ist etwas sehr Ähnliches. Wie das geht, wird beantwortethier bei stackoverflow.

Antwort4

Das funktioniert auch:

system <<~ "RSYNC";
    rsync \\
      --rsh="sshpass -p '$password' ssh -p 22" \\
      --archive \\
      --verbose \\
      --progress \\
      --partial \\
      --human-readable \\
      "$directory" \\
      "$options{host}:${directory}"
RSYNC

d.h. vorbeigehen sshpassstatt --rshvorrsync

Diese Methode wird zusammen mit der Verwendung der SSHPASSUmgebungsvariablen im Abschnitt „Beispiele“ des Handbuchs beschrieben:

https://www.freebsd.org/cgi/man.cgi?query=sshpass&sektion=1

verwandte Informationen