2010-04-21 10 views
10

Ich möchte die rsync-Aufgabe als Cron-Job automatisieren. Da es die Passphrase benötigt, kann ich den Cronjob nicht ausführen. Ich muss die Passphrase zusammen mit dem rsync Befehl angeben, oder ich werde die Passphrase in einer Datei speichern und ich werde davon lesen. Mein Befehl sieht so aus:So automatisieren Sie rsync, ohne nach einer Passwortabfrage zu fragen

rsync -aPe "ssh -i ' . $server->{'ssh_key'} . '" ' . $server_lock_dir; 

Also wo gebe ich das Passwort ein?

+1

gehört auf superuser.com –

Antwort

14

Sie müssen das nicht tun - müssen Sie nur ein Paar SSH-Schlüssel einrichten und den öffentlichen Schlüssel in das Verzeichnis .ssh des Remote-Systems legen.

Dann Sie dies nur tun:

rsync -a -e ssh /local/path/ server:/remote/path/ 

(Beachten Sie, dass -e ssh nun der Standard für einige Jahre gewesen ist, so dass Sie es wahrscheinlich weglassen kann, es sei denn, Sie eine sehr alte Version verwenden.)

Es gibt eine Anleitung zur Einrichtung der Tasten here.

+0

Die OP die Verwendung eines sshkey mit einer Passphrase erwähnt Wie funktioniert. dies löst die Passphrase Eingabe? – ricosrealm

+0

Die meisten Guides empfehlen das Erstellen der Schlüssel ohne Passphrase. – SDsolar

5

Wenn Sie dies von cron arbeiten möchten, haben Sie mehrere Möglichkeiten:

  • Setup-Kennwort lose SSH-Schlüssel - nicht sehr sicher
  • Setup-Kennwort lose SSH-Schlüssel, sondern mit ssh verbinden Forcecommand in der authorized_keys-Datei, um die Befehle einzuschränken, die mit diesem ssh-Schlüssel ausgeführt werden können. Siehe man sshd, google auf "ssh ForceCommand"
  • setup Passwworded SSH-Schlüssel, aber kombinieren Sie sie mit Schlüsselbund, um den Schlüssel im Speicher zwischen den Sitzungen zu halten. Ich habe einen Blog-Post auf diese geschrieben: ssh, ssh-agent, keychain and cron notes
4

Wenn Sie eine Remote-Dateien kopieren möchten:

  1. Achten Sie darauf, einen öffentlichen Schlüssel auf Ihrem lokalen Rechner haben, die in dem Remote-Rechner anmelden kann. (in diesem Fall des mein ssh-keys "/home/myaccount/.ssh/id_rsa"
  2. Geben lokale Ordner mögen Sie mit der Fernbedienung synchronisieren, in meinem Fall "/ home/myaccount/mysourcefolder"
  3. angeben der vollständige Pfad des Zielordners auf dem entfernten Server, in meinem Fall remoteaccount @ remoteserver: "/ home/remoteaccoun t/mydestinationfolder /“

Hinweis:

  • --progress ist für jede Datei Fortschritt zu zeigen, kopiert zu werden
  • -a zu übertragen recusively alle Dateien im mysourcefolder
  • -v für Ausführlichkeit
  • -z zum Komprimieren von Datenportionen für kleine Dateien

Mein Befehl wird wie folgt aussehen:

rsync -avz --progress -e „ssh -i/home/myaccount /.ssh/id_rsa“ /home/myaccount/mysourcefolder remoteaccount @ Entfernter_Server: "/ home/remoteaccount/mydestinationfolder /"

+0

Wie genau haben Sie "/home/myaccount/.ssh/id_rsa" erstellt und was ist dort drin geschrieben? Ist es das Passwort für den Remote-Server in Klartext (ohne Verschlüsselung)? Ich möchte nicht, dass andere Benutzer meines Computers (einschließlich des Administrators) mein Passwort lesen können. – mcExchange

Verwandte Themen