เพิ่งอัพเกรดจาก Snow Leopard เป็น Lion และงาน cron ของฉันที่ใช้ ssh หยุดทำงาน ปรากฏว่า ssh-agent ไม่ทำงานตามที่คาดไว้
ต่อไปนี้เป็นสคริปต์ที่เรียกว่าจาก cron รุ่นที่ใช้งานได้ดีซึ่งทำงานได้ดีภายใต้ 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
เมื่อเรียกใช้จากพรอมต์คำสั่งสคริปต์นี้ทำงานตามที่คาดไว้
เมื่อทำงานจาก cron มันไม่ทำงาน เอาต์พุต ssh-agent ดูปกติ:
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
แต่ssh -vvv
ผลลัพธ์แสดงว่ามันล้มเหลวทันทีเมื่ออ่านไพรเวตคีย์:
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
กล่าวอีกอย่างหนึ่งก็คือฉันคาดหวังให้พิมพ์ข้อความรหัสผ่านสำหรับ~/.ssh/id_dsa
ซึ่งแน่นอนว่าไม่สามารถใช้กับงาน cron ได้
ทั้งหมดนี้ทำงานใน Snow Leopard
โปรดทราบว่าฉันได้มีการติดตั้ง Keychain Access เพื่อให้ssh
, ssh-agent
และssh-add
ได้รับอนุญาตให้อ่านข้อความรหัสผ่านของฉันสำหรับฉัน.ssh/id_dsa
ไฟล์ - เป็นผลที่ฉันสามารถ SSH จากสถานีพร้อมรับคำโดยไม่ต้องใส่รหัสผ่านสำหรับการของฉัน
เป็นปัญหาที่ฉันต้องทำงานssh-add
ในบางช่วงของกระบวนการเข้าสู่ระบบของฉันหรือไม่ การเรียกใช้จากพรอมต์ bash มาตรฐานไม่ได้ช่วย cron job out (แม้ว่าแปลก ๆ มันทำให้ฉันใส่รหัสผ่านของฉัน ... ซึ่งฉันคิดว่าไม่จำเป็นต้อง b / c ของการกำหนดค่า Keychain Access)
หมายเหตุ 1 - ก่อนที่จะเปลี่ยนเส้นทางฉัน - ฉันรู้ว่ามีคำถามที่คล้ายกันที่นี่ (
Mac OS X Lion และ sshpass ) แต่เป็นเฉพาะเกี่ยวกับโปรแกรมsshpass
ที่ฉันไม่ได้ใช้ (แม้ว่าฉันเชื่อว่าคำถามนี้จะตอบโดยคนนี้เช่นกัน )
หมายเหตุ 2 - ฉันตระหนักว่าคีย์ SSH ที่ไม่มีข้อความรหัสผ่านจะแก้ปัญหาของฉันได้ แต่ฉันไม่ต้องการไปเส้นทางนี้