Wie richte ich Rsync ohne Passwort mit SSH unter UNIX / Linux ein?

19

Wie kann ich eine Rsync zwischen zwei Hosts einrichten, ohne ein Kennwort anzugeben?


quelle
Das sollte sehr hilfreich sein: blogs.oracle.com/jkini/entry/how_to_scp_scp_and
Tom
Maverick143 hat eine Antwort geliefert, aber diese Frage gehört nicht wirklich zu StackOverflow, da sie wenig mit Programmierung zu tun hat. SuperUser.com wäre relevanter gewesen.
Martin

Antworten:

30

Unten ist der Artikel von The Geek Stuff :

1. Testen Sie rsync über ssh (mit Passwort):

Führen Sie einen rsync durch, um sicherzustellen, dass das Kennwort für Ihr Konto auf dem Remoteserver abgefragt wird, und kopieren Sie die Dateien erfolgreich auf den Remoteserver.

Im folgenden Beispiel wird der lokale Ordner /home/test mit dem Remote-Ordner /backup/test(auf dem 192.168.200.10Server) synchronisiert .

Hier sollten Sie nach dem Kennwort Ihres Kontos auf dem Remote-Server gefragt werden.

rsync -avz -e ssh /home/test/ [email protected]:/backup/test/

2. ssh-keygen generiert Schlüssel.

Richten sshSie es jetzt so ein, dass bei der Ausführung von ssh kein Kennwort abgefragt wird. Verwenden Sie ssh-keygenauf lokalen Server öffentliche und private Schlüssel zu generieren.

$ ssh-keygen

Passphrase eingeben (leer für keine Passphrase):

Geben Sie dieselbe Passphrase erneut ein: Hinweis: Wenn Sie aufgefordert werden, die Passphrase einzugeben, drücken Sie einfach die Eingabetaste und geben Sie hier kein Passwort ein.

3. ssh-copy-id kopiert den öffentlichen Schlüssel auf den Remote-Host

Verwenden Sie diese Option ssh-copy-id, um den öffentlichen Schlüssel auf den Remote-Host zu kopieren.

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Hinweis: Im obigen Abschnitt wird das Kennwort für das Benutzerkonto auf dem Remote-Host abgefragt und der öffentliche Schlüssel automatisch an den entsprechenden Speicherort kopiert. Wenn die ssh-copy-id für Sie nicht funktioniert, verwenden Sie die zuvor beschriebene Methode, um die Anmeldung ohne ssh-Passwort einzurichten.

4. Führen Sie rsync über ssh ohne Passwort durch

Jetzt sollten Sie in der Lage sein, ohne Eingabe des Kennworts zum Remote-Host zu ssh.

ssh [email protected]

Führen Sie den rsync erneut durch. Sie sollten diesmal nicht aufgefordert werden, ein Kennwort einzugeben.

rsync -avz -e ssh /home/test/ [email protected]:/backup/test/
MangeshBiradar
quelle
Das hilft besser besser. troy.jdmz.net/rsync/index.html
MangeshBiradar
5
Löschen Sie das Kopieren und Einfügen von thegeekstuff.com/2011/07/rsync-over-ssh-without-password. Sie sollten auf den ursprünglichen Autor verweisen.
Lawrence Cherone
Wenn Sie einen anderen Benutzer verwenden müssen, können Sie dies tun, wenn Sie die ssh-copy-id ausführen: ssh-copy-id -i ~ / .ssh / id_rsa.pub [email protected]
Finni McFinger
1

Generieren Sie den öffentlichen Schlüssel in ServerA

$ ssh-keygen
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:

Der öffentliche Schlüssel wird generiert und in gespeichert

~/.ssh/id_rsa.pub

Kopieren Sie den öffentlichen Schlüssel auf den Remote-Host

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100

Oder

  • Öffnen Sie id_rsa.pub und kopieren Sie den Inhalt
  • Melden Sie sich mit demselben Benutzer im Befehl rsync bei ServerB an
  • Hängen Sie in ServerB den Inhalt an an ~/.ssh/authorized_keys. Erstellen Sie die Datei, falls nicht vorhanden. Stellen Sie sicher, dass der Dateimodus 700 ist.
Johny
quelle
0

Alle diese Rsync-Vorschläge schlagen mit der neuesten Version im August 2017 unter Ubuntu 16.04 LTS fehl. Kein einziger von ihnen arbeitet.

Sie alle teilen auch den Mangel, dass ein rsync-Daemon auf dem Dateiserver ausgeführt werden muss.

Diese Antwort funktioniert mit einem generischen Linux-NAS

HIER SIND SCHRITTE:
1) VERWENDEN Sie rsync wie unten gezeigt. (in ein Verzeichnis unter / mnt oder / media, das Sie erstellt haben, oder auf einem Gerät, das Sie mounten. Es spielt keine Rolle, welches) 2) ÜBERTRAGEN SIE Dateien MIT scp wie unten gezeigt. FileZilla wird auch funktionieren.

All dies (außer FileZilla) kann in cron ohne Passwort funktionieren.


Dieses Setup funktioniert sehr gut. Sie benötigen das Kennwort nur, wenn Sie die anfängliche ssh-copy-id einrichten, um die RSA-Anmeldungen ohne Kennwort einzurichten. Dann programmieren Sie es einmal in FileZilla. Danach werden Tag für Tag keine Passwortabfragen mehr ausgeführt. Das ist einfach. Und das Beste daran ist, dass Sie alle Vorteile des rsync-Programms nutzen können.

In dieser Antwort wird erläutert, wie Sie rsync selbst ohne Kennwort verwenden.

Außerdem muss auf keinem der beiden Systeme ein weiterer Daemon (rsync) installiert werden.

Wenn Sie es noch nicht getan haben, gehen Sie folgendermaßen vor:

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rse.pub NASserver

und testen Sie es damit:

ssh NASserver

und vielleicht so etwas:

scp myfile myusername@NASserver:Documents

Ich habe eine zweite Festplatte, daher verwende ich rsync, um das Startlaufwerk in ein Unterverzeichnis auf sdb1 zu kopieren (gemountet unter / mnt und von rsync ausgeschlossen).

Wenn Sie keine physische Festplatte haben und über genügend Speicherplatz verfügen, erstellen Sie einfach ein Unterverzeichnis unter / mnt (oder / media) und verwenden dieses.

Solange das Verzeichnis ausgeschlossen ist, spielt es keine Rolle, ob es sich auf einem separaten Laufwerk befindet oder nicht.

Hier ist das Backup-Skript:

cls
echo "EMPTYING TRASH"
rm ~/.local.share/Trash/*
echo "====================================================================="
echo "         BEGINNING rsync from root to /mnt/full/sysbkp"
echo "====================================================================="
time sudo rsync -aAXv / --delete --ignore-errors --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/full/mysystem

Verwenden Sie nach dem rsync ein Skript:

Ich erstelle immer ein neues Verzeichnis auf dem Ziel-NAS-Server: / mnt / fullsys / mysystem, damit nur die relevanten Dateien übertragen werden.

ssh -e"mv /mnt/fullsys/mysystem mysystem.bak" myusername@NASserver
ssh -e"mkdir /mnt/fullsys/mysystem" myusername@NASserver
scp -r /mnt/full/mysystem myusername@NASserver:/mnt/fullsys/mysystem

Voila! Es dauert eine Weile, aber dann ist es geschafft.

Beide Skripte können in cron gut funktionieren.


Die Alternative besteht darin, FileZilla zu verwenden, um den NAS-Server manuell zu senden.

Da es zu Löschungen kommen kann, gehe ich immer make a new directory and enter itüber FileZilla auf die Ziel-1-TB-Festplatte, sodass nur die relevanten Dateien übertragen werden.

Erst wenn die Übertragung abgeschlossen ist, entferne ich die ältere Version.

Voila. Erfolg.

SDsolar
quelle
-1

Markieren Sie den Benutzer in der Adresse wäre besser

ssh-copy-id -i ~/.ssh/id_rsa.pub <user_in_server>@192.168.1.100
DreamAndDead
quelle
2
Dies könnte zwar die Frage beantworten, aber es wäre eine bessere Antwort, wenn Sie eine Erklärung dafür liefern könnten .
DavidPostill
Auch die Syntax. Ich glaube, dies wird als Befehlssubstitution verwendet: rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)dann all das excludesund so weiter --delete. Ich habe es noch nicht zum Laufen gebracht, aber dies ist das nächste, das ich gesehen habe. Angeblich müssen Sie dies auch dann tun, wenn Sie dies bereits können sshund scpzum Zielserver, und der rsync-Dämon muss ausgeführt werden, da er kein normales SFTP-Format verwendet. Ich suche immer noch.
SDsolar