Snow Leopard'dan Lion'a yükseltme yaptım ve ssh kullanan cron işlerim artık çalışmıyor. Görünüşe göre ssh-agent artık beklendiği gibi çalışmıyor.
İşte, Snow Leopard altında harika çalışan cron denen komut dosyamın bowdlerize edilmiş bir sürümü:
#!/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
Komut isteminden çalıştırıldığında, bu komut dosyası beklendiği gibi çalışır.
Cron'dan çalıştırıldığında işe yaramıyor. Ssh-agent çıkışı normal görünüyor:
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
Ancak ssh -vvv
çıktı, özel anahtarın okunması gerektiğinde başarısız olduğunu gösterir:
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
Başka bir deyişle, ~/.ssh/id_dsa
elbette cron işlerinde çalışmayan parolayı yazmamı bekliyorum .
Bütün bunlar Snow Leopard'da çalıştı.
O kadar Anahtarlık Erişim kurulum var olduğunu Not ssh
, ssh-agent
ve ssh-add
benim için benim parola okumak için izin verilir .ssh/id_dsa
şimdiye benim parolayı girmek zorunda kalmadan bir terminal istemi gelen SSH bir sonucu olarak - dosyada.
ssh-add
Giriş işlemimin bir noktasında çalıştırmam gereken bu sorun mu? Standart bir bash komut isteminden çalıştırmak cron işine yardımcı olmaz (garip bir şekilde, parolamı istememi ister ... ki bu anahtarlık erişim yapılandırmasının gerekli olmadığını düşünüyorum).
NOT 1 - beni yönlendirmeden önce - Burada benzer bir soru olduğunun farkındayım (
Mac OS X Lion ve sshpass ) ama özellikle sshpass
kullanmadığım bir programla ilgili (bu sorunun bu soru tarafından da cevaplanacağına inanıyorum) ).
NOT 2 - Parola içermeyen SSH anahtarlarının sorunumu çözeceğini anlıyorum; ancak bu rotaya gitmemeyi tercih ederim.