Wie kann ich eine Rsync zwischen zwei Hosts einrichten, ohne ein Kennwort anzugeben?
Wie kann ich eine Rsync zwischen zwei Hosts einrichten, ohne ein Kennwort anzugeben?
Antworten:
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 dem192.168.200.10
Server) 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
ssh
Sie es jetzt so ein, dass bei der Ausführung von ssh kein Kennwort abgefragt wird. Verwenden Siessh-keygen
auf 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/
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
~/.ssh/authorized_keys
. Erstellen Sie die Datei, falls nicht vorhanden. Stellen Sie sicher, dass der Dateimodus 700 ist.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.
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
rsync -aAVx $(ssh-copy-id -i /home/myusername/.ssh/id_rsa.pub)
dann all das excludes
und 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 ssh
und scp
zum Zielserver, und der rsync-Dämon muss ausgeführt werden, da er kein normales SFTP-Format verwendet. Ich suche immer noch.