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?

linux  ssh  rsync 

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/ user@192.168.200.10:/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 user@192.168.200.10

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 user@192.168.200.10

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

rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/


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 user@192.168.200.10
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.

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.


-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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.