crontab定时运行git命令 更新代码库

Q:  http://stackoverflow.com/questions/7994663/git-push-via-cron

I‘m trying to run a git push from cron. When I do the command interactively on the shell it‘s going through fine. When running the command from my user‘s crontab, cron delivers the error message

Permission denied (publickey).

I presume it hasn‘t to do with finding or reading my ~/.ssh/id_rsa, as I can cat the file from cron alright. UID and EUID are set fine in the cron job. - Any ideas?

UPDATE

I got it working when supplying the environment key SSH_AUTH_SOCK to my cron job, but I‘m concerned that this is only valid as long as I‘m logged in. I‘m looking for a solution that works independent of interactive logins.

A:

down vote accepted

As explained here,it can be due to the lack of knowledge from the cron session shell of the ssh agent.
If that is the case (ie if you are using private ssh keys with a passphrase), keychain is the usual solution (as mentioned here).
More details in this example: "Passwordless connections via OpenSSH using public key authentication, keychain and AgentForward".

Very brief synopsis

1. Generate private/public key pair (id_dsa and id_dsa.pub).

Save private key in ~/.ssh/id_dsa on trusted hosts you will ssh from.

Append public key to ~/.ssh/authorized_keys on hosts you will ssh to.

Do not use ~/.ssh/authorized_keys2.  If you see that file, remove it

and upgrade to a recent version of SSH.

2. Set ForwardAgent yes in ssh_config on all hosts you ssh

from.  Set PubkeyAuthentication yes in sshd_config on all

hosts you ssh to.  Maybe set StrictModes no in sshd_config.

3. Install keychain then configure by adding the following lines

to your $HOME/.bash_profile:

/usr/local/bin/keychain $HOME/.ssh/id_dsa

source $HOME/.keychain/${HOSTNAME}-sh

4. For crontab scripts that use ssh, add the following line in

order to avoid having to manually enter a passphrase:

source $HOME/.keychain/${HOSTNAME}-sh

5. ssh from host to host without needing to enter passwords.  Where

you can ssh, you can also scp, sftp, etc., all securely but without

having to enter your passwords on the various hosts you use.

时间: 2024-10-10 21:55:14

crontab定时运行git命令 更新代码库的相关文章

使用Git和远程代码库

git是个了不起但却复杂的源代码管理系统.它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作.让我们诚实一记吧:Git是复杂的,我们不要装作它不是.但我仍然会试图教会你用(我的)基本的Git和远程代码库干活的工作步骤,在15分钟内. 工作步骤 我会展示以下的步骤,通常能帮我独自在一台或多台机器上做项目. 创建一个远程的空代码库(在BitBucket上) 在本地代码库添加一个项目 在分支上开发新功能 a) 保留新功能 或者 b) 丢弃它们 也许,回到某个早先的时间点 将本地代码库

15 分钟学会使用 Git 和远程代码库

Git是个了不起但却复杂的源代码管理系统.它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作.让我们诚实一记吧:Git是复杂的,我们不要装作它不是.但我仍然会试图教会你用(我的)基本的Git和远程代码库干活的工作步骤,在15分钟内. 工作步骤 我会展示以下的步骤,通常能帮我独自在一台或多台机器上做项目. 创建一个远程的空代码库(在BitBucket上) 在本地代码库添加一个项目 在分支上开发新功能 a) 保留新功能 或者 b) 丢弃它们 也许,回到某个早先的时间点 将本地代码库

Linux下的crontab定时执行任务命令详解

Linux下的crontab定时执行任务命令详解 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为"crontab",是"cron table"的简写. 一.cron服务 cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业. service crond start    //启动服务 servi

轻松使用git命令提交代码

Github在Windows和Mac上都提供了很好的图形化的客户端,UI风格节约,功能轻松易用.但是我们仍然有必要熟悉git命令来维护代码,比如linux. 借用@sunshyran总结的git提交代码的五个步骤: 查看代码的修改状态 查看代码的修改内容 暂存需要提交的代码 提交已暂存的文件 同步到服务器 Step1.查看代码的修改状态 打开git shell(环境:以windows为例,安装好Github的客户端并配置好账户信息), 默认是在git的工作空间路径,ls命令可以查看workspa

Linux下的crontab定时执行任务命令详解 - 回家的流浪者 - 博客园

Linux下的crontab定时执行任务命令详解 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron的配置文件称为“crontab”,是“cron table”的简写. 一.cron服务 cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业. service crond start    //启动服务 service crond stop 

crontab 不能执行git命令问题备忘

这问题够隐蔽,折腾了近两个小时. 命令 git checkout tagname 手工执行都正常 但在crontab运行时发现分支一直切不过去. 后来告诉是crontab默认的 path  设置和系统自身的有区别 git 命令放在 /usr/local/bin/ 目录 而crontab 却在  /sbin:/bin:/usr/sbin:/usr/bin 这几个目录下找,当然运行不了 git 命令了 目前解决办法是手工添加git路径前辍 /usr/local/bin/git checkout ta

轻松使用git命令创建代码仓库

我们已经可以轻松使用git命令上传代码修改了,本篇我们将学习如何使用git创建repository. 创建repository的五个步骤命令: git init git add –all git commit -m <comment> git remote add origin https://gitserver/username/projectname.git git push -u origin master 本地库 Step1.git init 打开git shell(环境:以windo

Linux crontab定时执行任务 命令格式与详细例子

基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示月份1-12 第5列标识号星期0-6(0表示星期天) 第6列要运行的命令 crontab文件的一些例子: 30 21 * * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每晚的21:30重启apache. 45 4 1,10,22 * * /usr/l

Linux crontab定时执行任务 命令格式

周期性任务执行:cron, vixie-cron,cronie crond:cron daemon, cron守护进程,一直工作于后台 #service crond status crond(pid  1718) is running... 如果状态信息为"is stopped.",则需要执行"service crond start;chkconfig crond on":   cron任务分两类: 系统cron: 定义在/etc/crontab 用户cron: 定