通过crontab通过ssh代理在ssh上执行rsync命令

通过crontab通过ssh代理在ssh上执行rsync命令,第1张

概述我有一个cronjob: 0 9 * * * rsync -a mydir remote_machine: 我用’crontab -e’安装了它.我有一个ssh-agent运行,当我执行rsync命令本身它没有任何用户交互或密码输入,但cronjob失败,并显示以下消息: Date: Wed, 9 Dec 2009 11:11:00 -0600 (CST)From: Cron Daemon < 我有一个cronjob:
0 9 * * * rsync -a mydir remote_machine:

我用’crontab -e’安装了它.我有一个ssh-agent运行,当我执行rsync命令本身它没有任何用户交互或密码输入,但cronjob失败,并显示以下消息:

Date: Wed,9 Dec 2009 11:11:00 -0600 (CST)From: Cron Daemon <me@my_machine.my_domain>To: me@my_machine.my_domainSubject: Cron <me@my_machine> rsync -a /home/me/mydir remote_machine:Permission denIEd,please try again.Permission denIEd,please try again.Permission denIEd (publickey,gssAPI-with-mic,password).rsync: connection unexpectedly closed (0 bytes received so far) [sender]rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-35.2/rsync/io.c(452)[sender=2.6.9]

为什么这不起作用?我知道cronjobs作为用户运行w / me(如果我运行’* * * * * touch / tmp / a’我拥有该文件)所以我假设rsync使用我的私钥登录我…

解决方法 您的cron会话shell不知道ssh代理,因此无法与之通信.

启动代理程序后,您可以将代理程序所需的信息放在cron会话中的某个位置以进行选择.

例:

AGENT="ssh-agent -s"if [ ! -d $HOME/.ssh/agent ]; then        mkdir -p $HOME/.ssh/agentfi## Start an agent if there isn't one running already.#pID=`ps -u$LOGname | grep ssh-age | awk '{print }'`if [ -z "$pID" ]; then        $AGENT | grep -v echo > $HOME/.ssh/agent/$HOST & pID=$!        sleep 1 # Let it fork and stufffi

然后将密钥添加到代理.

ssh-add $HOME/.ssh/ID_dsa

现在你的cron作业应该在尝试使用ssh之前执行此 *** 作:

## Get our parent to pick up the required SSH env vars.#. $HOME/.ssh/agent/$HOST

…之后,ssh会话应该正常进行.

总结

以上是内存溢出为你收集整理的通过crontab通过ssh代理在ssh上执行rsync命令全部内容,希望文章能够帮你解决通过crontab通过ssh代理在ssh上执行rsync命令所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1045945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存