加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 为什么ssh从crontab失败,但是从命令行执行时会成功?

发布时间:2020-12-15 18:56:11 所属栏目:安全 来源:网络整理
导读:我有一个bash脚本,用于执行ssh到远程机器,并在那里执行一个命令,如: ssh -nxv user@remotehost echo "hello world" 当我从命令行执行命令它工作正常,但是作为crontab的一部分执行时失败(errorcode = 255 – 无法建立SSH连接).细节: ...Waiting for server
我有一个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文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读