Baru saja ditingkatkan dari Snow Leopard ke Lion, dan pekerjaan cron saya yang menggunakan ssh telah berhenti bekerja. Tampaknya ssh-agent tidak lagi berfungsi seperti yang diharapkan.
Berikut ini adalah versi singkat dari skrip dipanggil-dari-cron saya yang bekerja sangat baik di bawah Snow Leopard:
#!/bin/bash
whoami # just to verify I'm running as myself, not root
ssh-agent # just to see what it outputs
eval `ssh-agent`
ssh -vvv REMOTESERVER ls
Saat dijalankan dari prompt perintah, skrip ini berfungsi seperti yang diharapkan.
Ketika dijalankan dari cron, itu tidak bekerja. Output ssh-agent terlihat normal:
SSH_AUTH_SOCK=/tmp/ssh-QRxPUMRxbu/agent.17147; export SSH_AUTH_SOCK;
SSH_AGENT_PID=17148; export SSH_AGENT_PID;
echo Agent pid 17148;
Agent pid 17150
Tetapi ssh -vvv
output menunjukkan bahwa gagal tepat ketika kunci pribadi harus dibaca:
debug1: Server accepts key: pkalg ssh-dss blen 818
debug2: input_userauth_pk_ok: fp ...
debug3: sign_and_send_pubkey: DSA ...
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
debug1: read_passphrase: can't open /dev/tty: Device not configured
debug2: no passphrase given, try next key
Dengan kata lain, itu mengharapkan saya untuk mengetikkan frasa sandi ~/.ssh/id_dsa
, yang tentu saja tidak berfungsi dalam pekerjaan cron.
Ini semua bekerja di Snow Leopard.
Perhatikan bahwa saya punya pengaturan Keychain Access sehingga ssh
, ssh-agent
, dan ssh-add
diperbolehkan untuk membaca passphrase saya untuk saya .ssh/id_dsa
berkas - sebagai hasilnya saya bisa SSH dari prompt terminal tanpa harus memasukkan kata sandi saya.
Apakah masalah ini yang perlu saya jalankan ssh-add
di beberapa titik dalam proses login saya? Menjalankannya dari bash prompt standar tidak membantu pekerjaan cron (walaupun, anehnya, itu meminta saya untuk frasa sandi saya ... yang saya pikir tidak perlu b / c dari konfigurasi Akses Keychain).
CATATAN 1 - sebelum mengarahkan saya - Saya sadar ada pertanyaan serupa di sini (
Mac OS X Lion dan sshpass ) tetapi ini secara khusus tentang program sshpass
yang tidak saya gunakan (walaupun saya percaya pertanyaan itu akan dijawab oleh yang satu ini juga ).
CATATAN 2 - Saya menyadari bahwa kunci SSH tanpa frasa sandi akan menyelesaikan masalah saya; namun saya lebih suka untuk tidak menempuh rute ini.