当我手动运行以下命令时,它运行完美:
/usr/bin/rsync -arvth -e "ssh -i /watch/scripts/word.pem" 1.1.1.1:/opt/ /opt
当它使用 crontab 运行时。我得到:
权限被拒绝(publickey、gssapi-keyex、gssapi-with-mic、密码)。rsync:连接意外关闭(迄今为止已接收 0 字节)[接收器] rsync 错误:io.c(600) 处出现无法解释的错误(代码 255)[接收器=3.0.6]
我在这里遗漏了什么?
谢谢!Dotan。
答案1
Cron 不会在与交互式登录 shell 相同的环境中运行(具有相同的环境变量)。我猜这与此有关。
您可能在本地计算机上有一个 ssh 代理,您可以转发它来访问 1.1.1.1,或者您将其他内容设置为访问服务器所需的环境变量。
您可以通过在 cron 文件中设置来为 cron 设置环境变量:
VARIABLE=true
0 * * * * /usr/bin/rsync -arvth -e "ssh -i /watch/scripts/word.pem" 1.1.1.1:/opt/ /opt
答案2
似乎当您将 AMI(图像)从 Amazon 的一个区域复制到另一个区域并在新的 Amazon 区域启动实例时。authorized_keys 仅保留来自原始区域的证书(尽管创建了新证书)而不是新证书。所以您必须手动添加它。谢谢,Dotan。