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身份工作. $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文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- UNIX/MacOSX上的静态文件的“临时Web服务器”?
- yum 6.8 nginx php-fpm
- twitter-bootstrap – 如何使引导导航链接不活动
- scala – 在Spark Dataframe中创建具有函数的新列
- docker-compose的开发工作流程:运行dev-version容器
- iis-7 – 为AngularJS配置IIS URL重写模块HTML5Mode仍无效
- angular – Ionic2 – 检查页面是否处于活动状态
- BootstrapTable+KnockoutJS相结合实现增删改查解决方案(三
- 1.3、Bootstrap V4自学之路------起步---浏览器支持
- scala – 将数组[Array [Double]]转换为数组[Double]