为什么 rsync 与詹金斯失败
Why rsync fails with jenkins
当 rsync 与 jenkins 一起使用作为在 CentOS 6.4 上执行 shell 命令时,它失败了:
[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
需要做些什么才能使其在 jenkins 中也能正常工作?
问题出在 CentOS 上安装的 SElinux,由于某种原因它阻止了 rsync 的 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)
我遇到了类似的问题。
在我的情况下,jenkins 没有与预期的用户 (jenkins) 执行 rsync,而是与另一个用户(jboss 在我的情况下)
将“whoami
”添加到脚本并使用 ssh verbose:
rsync -e "ssh -v" .......
帮助找到问题。
注意,当您将 jenkins 用户更改(添加)到某个组时,权限将在从属(代理)重启后应用。
当 rsync 与 jenkins 一起使用作为在 CentOS 6.4 上执行 shell 命令时,它失败了:
[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
需要做些什么才能使其在 jenkins 中也能正常工作?
问题出在 CentOS 上安装的 SElinux,由于某种原因它阻止了 rsync 的 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)
我遇到了类似的问题。
在我的情况下,jenkins 没有与预期的用户 (jenkins) 执行 rsync,而是与另一个用户(jboss 在我的情况下)
将“whoami
”添加到脚本并使用 ssh verbose:
rsync -e "ssh -v" .......
帮助找到问题。
注意,当您将 jenkins 用户更改(添加)到某个组时,权限将在从属(代理)重启后应用。