我有一个bash脚本,用于执行ssh到远程机器,并在那里执行一个命令,如:
ssh -nxv user@remotehost echo "hello world"
当我从命令行执行命令它工作正常,但是作为crontab的一部分执行时失败(errorcode = 255 – 无法建立SSH连接).细节:
... Waiting for server public key. Received server public key and host key. Host 'remotehost' is known and matches the XXX host key. ... Remote: Your host key cannot be verified: unknown or invalid host key. Server refused our host key. Trying XXX authentication with key '...' Server refused our key. ...
在本地执行时,我作为一个根,crontab也以root身份工作.
从crontab和命令行执行’id’提供完全相同的结果:
$id > uid=0(root) gid=0(root) groups=0(root),...
我从一些本地机器到运行crond的机器上执行ssh.我有ssh密钥和凭据到ssh,以克隆机器和脚本连接到的任何其他机器.
PS.请不要询问/抱怨/评论执行任何东西作为root是坏/错误/等 – 这不是这个问题的目的.
我猜,通常当你从本地机器到运行crond的机器ssh时,你的私钥被加载到ssh代理并通过连接转发.因此,当您从命令行执行命令时,它将在ssh-agent中找到您的私钥,并使用该密钥登录到远程计算机.
当crond执行命令时,它不能访问ssh-agent,所以不能使用你的私钥.
您将必须在运行crond的计算机上为root创建一个新的私钥,并将其公共部分复制到希望crond登录到的远程计算机上的相应authorized_keys文件.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。