Passwortloses Rsync über SSH ohne Schlüsselauthentifizierung [nicht sicher]

12

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 all seinen Inhalten sichern. Der SSH-Benutzertest 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 unter 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 der rsync funktioniert.

Ich möchte den obigen Befehl ausführen, um das Kennwort automatisch einzugeben und als Parameter zu übergeben, oder um es automatisch einzugeben und den Job zu starten.

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

Ich möchte keine Art von Schlüsseln hören (RSA, DSA oder andere). Ich möchte nur einen einfachen Befehl, der mich anmeldet und die Arbeit erledigt.

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

EDIT: Dies ist , was für mich endlich geklappt:

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

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

Sorin-Mihai Oprea
quelle
3
Sie werden keine Antworten erhalten, wenn Sie die Leute auffordern, Ihnen keine Antwort zu geben.
Mike Scott
7
Das ist sinnlos. Was ist das Problem mit der Schlüsselauthentifizierung? Wenn die schlüsselbasierte Authentifizierung konfiguriert ist, haben Sie ab diesem Zeitpunkt nur noch einen einfachen Befehl, der die Aufgabe automatisch genau so ausführt, wie Sie es möchten. Ich kann also nicht erkennen, wo das Problem liegt. Das Passwort irgendwo zu speichern, um es "automatisch" festzulegen, ist eine der größten Sicherheitslücken, die ich mir vorstellen kann. Was bringt das?
LGB
Ich brauche niemanden, der mir Vorträge über Sicherheit hält. Ich kenne die Implikationen bereits. Ich muss einfach alles auf dem Server belassen und nichts ändern. Zu Ihrer Information habe ich das schon mit Schlüsseln versucht und es fragt mich immer noch nach dem Passwort, daher ist Ihr Argument ungültig!
Sorin-Mihai Oprea
1
Nein, aus guten Gründen gibt es standardmäßig keinen solchen Parameter. Schauen Sie sich die Antwort von Migs an, wenn Sie einen solchen Parameter wünschen.
Lumbric
2
@ Sorin Mihai Oprea: Nun, wenn es bei dir nicht funktioniert, ist es schlecht? Interessant. Zu Ihrer Information: Als Internet-Systemingenieur bei einem ISP verwenden wir die schlüsselbasierte Authentifizierung mit ssh auf mehr als 100 Servern. Es funktioniert für uns interessant. Nenne etwas nicht schlecht, nur weil du nicht verstehst, wie es funktioniert und wie es konfiguriert werden muss. Wenn Sie Recht haben, würde es für niemanden funktionieren, der als schwerwiegender Fehler bei der Implementierung von SSH-Servern auffällt. Es ist nicht dasselbe, sorry.
LGB

Antworten:

29

Vielleicht versuchen Sie es mit sshpass .

scheint einfach genug zu sein ... es ist auch über Apt erhältlich.

Ich habe nach so etwas gesucht, bevor ich meine Schlüssel kopiert habe, aber da ich meinen Schlüssel ohnehin überall habe, habe ich mir nicht die Zeit genommen, dies zu versuchen.

Beachten Sie jedoch den dortigen Haftungsausschluss in Bezug auf die Sichtbarkeit Ihres Passworts.


Für alle, die dies tun müssen:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Migs
quelle
Sie sind herzlich willkommen. Obwohl ich dem Rest der Leute hier zustimme, dass die Authentifizierung mit öffentlichen Schlüsseln die beste Lösung für diese Angelegenheit ist, sind manchmal alternative Methoden erforderlich, sofern wir die Kompromisse bei der Verwendung von Alternativen kennen.
Migs
In der Tat ... aber deshalb heißt es Open Source, oder? Mehrere Geschmacksrichtungen ... das gleiche Ergebnis!
Sorin-Mihai Oprea
1
DANKE, dass Sie nicht nur sagen, dass Passwörter schlecht sind, verwenden Sie sie nicht. Einige von uns auf alten OLDDDD-Geräten benötigen diese nur, um auszukommen, bis die neuen Geräte eintreffen :)
Theodore Howell
6

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

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

Der Unterschied besteht darin, dass beim Auflisten der ausgeführten Prozesse Ihr Kennwort nicht in der Befehlszeile angezeigt wird, sondern nur der Pfad zu der Datei, in der sich Ihr Kennwort befindet.

Andrew Allaire
quelle
Diese Antwort ist besser als die akzeptierte Antwort.
Vietnguyen09
1

Ich kann mir keine Situation vorstellen, in der die Authentifizierung mit öffentlichen Schlüsseln ohne Passphrase die bessere Lösung für automatisierte ssh / rsync-Anmeldungen wäre.

Auf jeden expectFall sollte dies ein Weg sein, um das zu erreichen, was Sie tun möchten. Sie können das Passwort nicht an ssh leiten, aber das ist etwas sehr Ähnliches. Wie das geht, wird hier bei stackoverflow beantwortet .

lumbric
quelle
Vielen Dank für den Vorschlag, aber ich fand sshpass viel einfacher!
Sorin-Mihai Oprea
1

Ich fand, dass sshpass funktioniert, aber da das termanal besagt, dass SSHPASS read: Enter passphrase for key '/home/ubuntu/.ssh/id_rsa':Sie es in etwa so ausführen müssen:

sshpass -P passphrase -p 'password' rsync /path/to hostname:/destination/path -av --progress -e ssh

Where -Pgibt an, nach welcher Eingabeaufforderung sshpass -vgesucht werden soll. Das habe ich herausgefunden, indem ich ausgeführt habe und herausgefunden habe, ob nach der Phrase gesucht wurde, passworddie nicht vorhanden ist.

GuySoft
quelle
0

Das erste, was Sie tun können, ist ssh ohne passowrd/bypassdas Passwort login, da Sie sehen können, dass wir es ssh-copy-id -i ./ssh/id_rsa.pubzur Zielmaschine verwenden können.

Nach diesem Test kann die Maschine per ssh ohne Passwort ferngesteuert werden, dann rsync auf dem Weg natürlich von lokaler Maschine zu target/serverMaschine

budi satriyo
quelle