有一个非常奇怪的问题。我创建了一个小的bash脚本,该脚本通过ssh(使用公共密钥身份验证)在远程主机上运行命令。
当我从命令行手动运行此脚本时,它可以正常工作,但是当放置在/etc/cron.hourly中时,它将失败并显示Permission denied, please try again.
错误。
- 我使用
ssh -i /root/.ssh/id_rsa user@remote "command"
;在脚本中显式设置了密钥。 - 该脚本以root身份运行(我在
echo `id` > /tmp/whoami.log
复查中添加了a );和 - ssh密钥不受密码保护...
该系统是Ubuntu 12.04服务器,我在远程端没有太多访问权限来进行故障排除,但是正如我所说,手动运行ssh或从命令行运行相同的bash脚本即可。
知道为什么会这样或如何解决吗?
更新
原来我弄错了,并且ssh密钥受密码保护(通过钥匙串加载ssh-agent),因此为什么它从脚本失败而不是从bash会话运行时失败。将. ~/.keychain/$HOSTNAME-sh
脚本添加到我的脚本即可解决问题(感谢@grawity指出了正确的方向并提供了完整的答案)。
SSH_AUTH_SOCK
关联(尽管我很乐意尝试任何事情)。我正在直接访问密钥文件,并且密钥文件没有密码保护。作为KRB5CCNAME
一个快速搜索表明,这是事做使用Kerberos。再次-没有看到与此问题的联系,但也许我在这里错过了一些东西……
-v
选项,那就更好了ssh
……
ssh -i
在这两种情况下,我都明确使用key using 命令。。。我将尝试在脚本中取消设置那些变量,然后看看。要添加的好建议-v
-我也会添加。
SSH_AUTH_SOCK
和KRB5CCNAME
环境变量后再次测试。