首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在jenkins中执行RSYNC命令

在jenkins中执行RSYNC命令
EN

Server Fault用户
提问于 2014-09-10 13:26:00
回答 3查看 14.7K关注 0票数 7

我正在尝试将我的代码部署到远程服务器。到目前为止我已经试过了

  • 在SSH插件上发布:问题是我无法保留文件权限
  • Rsync命令:这保留了文件权限,但问题是我不知道如何设置密码使其自动工作

我得到的是:

代码语言:javascript
运行
复制
[JenkinsBuild] $ /bin/sh -xe /var/lib/jenkins/tmp/hudson4646064064846581974.sh
+ rsync -PSauve ssh --exclude=JenkinsBuild app bower.json config gruntfile.js karma.conf.js LICENSE.md Makefile node_modules package.json Procfile protractor.conf.js public README README.md server.js john@192.168.2.10:/srv/dp/prod
Host key verification failed.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6]

知道我在这里做错什么了吗?

EN

回答 3

Server Fault用户

回答已采纳

发布于 2014-09-10 20:05:39

嗯,我替换了know_host文件,但我仍然有问题。因此,对于任何有know_host文件问题的人,您都可以通过执行以下操作来修复这个违规的键:

代码语言:javascript
运行
复制
ssh-keygen -R hostnameOfOfendingKey

这将删除频繁的键,现在您的known_host文件又开始工作了。

为了解决另一个问题,我在另一个地方找到了答案:https://stackoverflow.com/questions/25755418/executing-rsync-in-jenkins/25770519#25770519

这就是我为解决问题所做的

代码语言:javascript
运行
复制
sudo su jenkins -s /bin/bash

然后,当jenkins用户将我的ssh键复制到我想要连接/执行命令的服务器时,等等。

代码语言:javascript
运行
复制
ssh-copy-id myuser@TheRemoteserver.com

然后它会呈现给你这个

代码语言:javascript
运行
复制
myuser@TheRemoteserver.com's password: 
Now try logging into the machine, with "ssh 'myuser@TheRemoteserver.com'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

然后我这样做是为了测试目的:

代码语言:javascript
运行
复制
bash-4.1$ rsync -PSauve ssh --exclude=JenkinsBuild /srv/pd/* myuser@TheRemoteserver.com:/srv/pdc/test1  

没问密码什么的就通过了。请注意,我仍然以jenkins的身份登录。

所以现在,当我使用一些shell命令创建Jenkins作业作为构建的一部分时,它将像预期的那样工作:D

票数 3
EN

Server Fault用户

发布于 2014-09-10 13:43:29

代码语言:javascript
运行
复制
Host key verification failed.

运行jenkins的帐户对于您要在~/.ssh/known_hosts.中运行的机器的主机键可能有一个坏值。

票数 4
EN

Server Fault用户

发布于 2017-03-22 10:44:20

我也有过类似的问题。

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

代码语言:javascript
运行
复制
rsync -e "ssh -v" .......

帮助发现了问题。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/627552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档