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

从通过cron作业运行的bash脚本访问SSH密钥

发布时间:2020-12-16 01:36:10 所属栏目:安全 来源:网络整理
导读:我已经将这个脚本放在一起,每天更新一个分叉的 Github存储库文件夹.如果我从提示符调用它,它运行正常,但我可以’弄清楚如何在作为cron作业运行时可靠地利用我的id_rsa. eval’sss-agent’试图做到这一点,但它没有看到任何积极的影响. #!/bin/shLOGPATH=log.t
我已经将这个脚本放在一起,每天更新一个分叉的 Github存储库文件夹.如果我从提示符调用它,它运行正常,但我可以’弄清楚如何在作为cron作业运行时可靠地利用我的id_rsa. eval’sss-agent’试图做到这一点,但它没有看到任何积极的影响.
#!/bin/sh
LOGPATH=log.txt
eval 'ssh-agent'
cd /path/to/update/folder
echo "-------START UPDATE-------">$LOGPATH
echo "Updating repos:">>$LOGPATH
date "+%F %T">>$LOGPATH
COUNT=1
find . -maxdepth 1 -type d | while read dir; do
cd "$dir"
LEN=$"${#dir}"
if [ $LEN != "1" ]
    then
    echo "*********">>$LOGPATH
    echo "$COUNT. " ${dir:2}>>$LOGPATH
    /usr/local/bin/git pull upstream master>>$LOGPATH 2>> $LOGPATH
    /usr/local/bin/git push origin master>>$LOGPATH 2>> $LOGPATH
    let COUNT=COUNT+1
fi
cd "$OLDPWD"
done
echo "-------END UPDATE-------">>$LOGPATH
exit 0

对于整个过程来说,这可能是一种非常低效的方式,但是它有效并且我从未见过它.如果我可以使用我的信用卡,我会很高兴.

我相信你使用了错误的报价.简单引用ssh-agent不做任何事情,你需要通过使用命令替换来合并运行它的结果:
eval `ssh-agent`

要么

eval $(ssh-agent)

这会导致脚本设置所需的环境变量.但是,除非您添加ssh-agent,否则ssh-agent仍然没有任何密钥.如果您的密钥没有密码,那么可以从脚本中简单地运行ssh-add.

如果您的私钥确实有密码短语,您可能希望将此脚本作为守护程序而不是cron作业运行.这将允许您连接到代理并添加您的私钥.

脚本在命令行中运行的真正原因是您的桌面环境可能正在运行ssh-agent,它会安排将所需的环境变量传播到所有终端窗口. (要么让他们成为孩子并继承变量,要么让你的shell获得必要的命令.)我猜你在正常的工作流程中的某些时候运行ssh-add?

(编辑:李大同)

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

    推荐文章
      热点阅读