Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssh 为什么rsync无法与jenkins合作_Ssh_Jenkins_Centos_Rsync_Selinux - Fatal编程技术网

Ssh 为什么rsync无法与jenkins合作

Ssh 为什么rsync无法与jenkins合作,ssh,jenkins,centos,rsync,selinux,Ssh,Jenkins,Centos,Rsync,Selinux,在CentOS 6.4上,当rsync与jenkins一起用作Execute 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: Permi

在CentOS 6.4上,当rsync与jenkins一起用作Execute 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,正确的解决方案是创建自定义策略模块()

我遇到了类似的问题

在我的例子中,jenkins没有与预期的用户(jenkins)执行rsync,而是与另一个用户(在我的例子中是jboss)执行rsync 将“
whoami
”添加到脚本并使用ssh详细信息:

rsync -e "ssh -v" .......

帮助找到问题。

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

您是否已将ssh密钥复制到远程计算机中?当您从命令行执行此操作时,是否必须键入用户名和pasaword?ssh密钥位于远程计算机上,当我从命令行执行此操作时,不必键入用户名和密码。