Ich würde es nicht empfehlen, in einem cron-Job ssh-add
oder expect
in einem cron-Job zu laufen, da es übermäßig kompliziert ist, ihn in der begrenzten Umgebung auszuführen, in der cron seine Jobs ausführt, und ich möchte keine Passwörter in der crontab speichern.
Anstelle Ihres regulären SSH-Schlüssels würde ich einen neuen Schlüssel erstellen, der nur dazu verwendet wird, den Befehl auszuführen, den Sie mit cron ausführen möchten. Ich würde den Schlüssel ohne Passphrase konfigurieren und dessen Besitz / Berechtigungen ändern (0600), sodass nur mit der effektiven Benutzer-ID, unter der der Cron-Job ausgeführt wird, darauf zugegriffen werden kann, dh der ID der Benutzer, deren Crontab gerade verwendet wird verarbeitet.
In Ihrem speziellen Fall muss der git push
neue Schlüssel auf Ihren Git-Server hochgeladen werden. Die meisten Git-Server sollten in der Lage sein, mehrere öffentliche SSH-Schlüssel zu akzeptieren.
Im Allgemeinen ist es für automatisierte Prozesse am besten, spezifische Schlüssel ohne Passphrasen zu erstellen. Ein eingeschränkter Satz zulässiger Befehle wird dann auf dem Remote-SSH-Server konfiguriert, indem der Zeile in der authorized_keys
Datei Optionspaare vorangestellt werden, z.
command="automated-task.sh",client=my.local.host,no-pty,no-agent-forwarding,no-port-forwarding ssh-rsa AAA…public…part…of…specific…keypair automated_user@server
Haftungsausschluss: Ich habe mehr Erfahrung mit GNU / Linux als OS X, aber AFAIK, die obigen Informationen sollten für alle * nix-Systeme gelten.