从Snow Leopard升级到Lion,我使用ssh的cron作业已停止工作。似乎ssh-agent不再按预期运行。
这是我的Cron脚本的Bowdlerized版本,在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作业中不起作用。
这一切都在雪豹中发挥了作用。
请注意,我有钥匙串访问设置,使ssh
,ssh-agent
和ssh-add
被允许阅读我的密码我的.ssh/id_dsa
文件-作为一个结果,我可以从一个终端提示SSH连接时无需输入密码我。
ssh-add
在登录过程中是否需要运行此问题?从标准的bash提示符运行它并不能帮助cron完成工作(尽管,奇怪的是,它确实提示我输入密码...我认为这不是钥匙串访问配置的必要条件)。
注意1-在重定向我之前-我知道这里有一个类似的问题(
Mac OS X Lion和sshpass),但这是专门针对sshpass
我不使用的程序的(尽管我相信这个问题也可以回答) )。
注2 –我意识到无密码的SSH密钥可以解决我的问题;但是我不想走这条路。