saya punya cronjob:
0 9 * * * rsync -a mydir remote_machine:
saya menginstal ini dengan 'crontab -e'. saya memiliki ssh-agent yang berjalan, dan ketika saya menjalankan perintah rsync itu sendiri ia berfungsi tanpa interaksi pengguna atau kata sandi, tetapi cronjob gagal dengan pesan berikut:
Date: Wed, 9 Dec 2009 11:11:00 -0600 (CST)
From: Cron Daemon <me@my_machine.my_domain>
To: me@my_machine.my_domain
Subject: Cron <me@my_machine> rsync -a /home/me/mydir remote_machine:
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-with-mic,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-35.2/rsync/io.c(452)
[sender=2.6.9]
mengapa ini tidak berhasil? saya tahu cronjobs dijalankan dengan saya sebagai pengguna (jika saya jalankan '* * * * * sentuh / tmp / a' saya memiliki file) jadi saya menganggap rsync sedang masuk saat saya menggunakan kunci pribadi saya ...
gantungan kunci adalah apa yang Anda butuhkan! Cukup instal dan tambahkan kode ikuti di
.bash_profile
(atau setara) Anda:Untuk config.fish ( 2 ):
Kemudian gunakan kode di bawah ini dalam skrip Anda untuk memuat variabel lingkungan ssh-agent:
Untuk ikan:
Jika kunci Anda memiliki frasa sandi, gantungan kunci akan meminta Anda satu kali (valid hingga Anda me-reboot mesin atau membunuh ssh-agent).
Catatan: gantungan kunci juga menghasilkan kode
csh
danfish
kerang, jadi ganti saja akhiran "-sh" menjadi "-csh" atau "-fish".sumber
Saya tidak memiliki cukup perwakilan untuk memberikan suara pada jawaban pertama, tetapi itu memecahkan masalah yang saya alami. Dalam hal ssh-agent, Anda mungkin sudah menjalankan satu. Berikut ini adalah skrip untuk mengekstrak SSH_AGENT_PID & SSH_AUTH_SOCK dari lingkungan tanpa hal tambahan untuk disimpan pada startup ssh-agent. (Menganggap bahwa Anda memiliki perl)
Masukkan yang berikut ini dalam naskah. (misalnya findagent.pl)
dan di dalam skrip cron Anda tambahkan baris:
eval `{path to script} / findagent.pl`
sumber
Saya kira Anda menggunakan otentikasi berbasis kunci untuk mengotentikasi diri Anda dengan mesin jarak jauh. Coba baris di bawah ini:
Di mana .ssh / id_rsa adalah jalur ke kunci pribadi Anda. Ini adalah garis persis yang saya gunakan untuk melakukan backup dan selalu berfungsi dengan baik untuk saya.
Salam hangat,
Fabian
sumber
Sebagai alternatif, alih-alih menggunakan ssh agent, saya membuat skrip saya untuk mengekspor RSYNC_RSH = "ssh -i /home/user/.ssh/id_rsa" unset SSH_AGENT_PID unset SSH_AUTH_SOCK sebelum memanggil rsync. Dengan meletakkannya di RSYNC_RSH alih-alih menggunakan '-e ...' itu membuatnya mudah untuk menyesuaikan file id yang digunakan berdasarkan host.
Semoga ini bisa membantu, B
sumber