为什么rsync因jenkins而失败

时间:2015-06-09 21:31:05

标签: ssh jenkins centos rsync selinux

当rsync与jenkins一起用作CentOS 6.4上的Execute shell Command时,它会失败:

[workspace] $ /bin/sh -xe /tmp/hudson3424899639384884888.sh
+ rsync -av /var/lib/jenkins/jobs/myjob/workspace/target/classes/ myuser@myserver.com:/home/myuser/test
rsync: Failed to exec ssh: Permission denied (13)
rsync error: error in IPC code (code 14) at pipe.c(84) [sender=3.0.6]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in IPC code (code 14) at io.c(600) [sender=3.0.6]

但是,它可以从命令行运行:

su jenkins
rsync -av /var/lib/jenkins/jobs/myjob/workspace/target/classes/ myuser@myserver.com:/home/myuser/test
sending incremental file list

sent 17875 bytes  received 83 bytes  3990.67 bytes/sec
total size is 1981027  speedup is 110.31

要使它在詹金斯中发挥作用还需要做些什么?

3 个答案:

答案 0 :(得分:0)

问题出在CentOS上安装了SElinux,由于某些原因阻塞了rss的ssh。

这是/ var / log / messages中的一行,表示ssh已被阻止:

Jun 12 13:45:59 myserver kernel: type=1400 audit(1434109559.911:33346): avc:  denied  { execute } for  pid=11862 comm="rsync" name="ssh" dev=dm-1 ino=11931741 scontext=unconfined_u:system_r:rsync_t:s0 tcontext=system_u:object_r:ssh_exec_t:s0 tclass=file

目前我们在服务器上禁用了SElinux,正确的解决方案是创建自定义策略模块(1

答案 1 :(得分:0)

我有类似的问题。

在我的情况下,jenkins没有与预期的用户(jenkins)执行rsync,而是使用另一个(jboss在我的情况下) 将“DELETE TOP (1) FROM table_name WHERE fk_role_id= (SELECT fk_role_id FROM table_name GROUP BY fk_role_id HAVING COUNT(fk_role_id)>1) ”添加到脚本并使用ssh verbose:

whoami

帮助找到了问题。

答案 2 :(得分:0)

请注意,当您将jenkins用户更改(添加)到某个组时,将在奴隶(代理)重新启动后应用权限。