【发布时间】:2018-04-18 06:48:01
【问题描述】:
我的要求是这样的: 詹金斯安装在一台服务器上(比如服务器 A)。 我在此服务器中有 3 个脚本,用于将战争部署到不同的服务器中,例如 B 和 C。
有一个主脚本说 JenkinsMainScript.sh 。在此脚本中,我已根据执行 shell 时传递的参数将部署脚本(例如 serverB.sh/serverC.sh)从服务器 A 复制到相应的服务器 serverB 或 serverC,例如:
/root/Pictures/JenkinsTesting/JenkinsBuildMain.sh B
在 jenkins 的“Build”部分下的 jenkins 的“Execute shell”中 其中 B 是要部署的服务器名称。 即如果我在上述语句中再次将 C 作为参数传递,那么主脚本会将 serverC.sh 从服务器 A 复制到服务器 C 并将战争部署到该服务器 注意:-所有部署步骤都写在服务器 C 的 serverC.sh 和服务器 B 的 serverB.sh 中。
同样,我在 jenkins 中的部署分为两个步骤,Job1 和 Job2。
1.通过将源作为使用SSH访问的git存储库来创建war文件(例如服务器D) 2.Job1执行成功后会触发Job2。
在 Job2 中,我正在执行 Build 部分下的 JenkinsBuildMain.sh 文件。
问题是如果我在 jenkins 的 .ssh 目录中添加 id_rsa 和 id_rsa.pub 文件以访问 git 服务器(服务器 D),同时我无法通过 SSH 连接访问服务器 B 等其他服务器进行部署。 同样,如果我在 .ssh 中为部署服务器(服务器 B)添加 id_rsa 和 id_rsa.pub 文件,则 Git 服务器无法同时访问。 这意味着一次只能使用 SSH 连接访问一台服务器。
有没有办法使用相同的密钥或不同的密钥访问两个服务器?
或者我们可以为 ssh 连接添加多个密钥,以便它可以访问两个服务器,服务器 D 用于 git clone 和服务器 B 用于将脚本文件从 jenkins 服务器复制到 服务器 B 。
当我这样做时,我收到以下消息: "主机密钥验证失败。 失去连接”
当前我可以一次连接一台服务器。如果它连接到 Git 服务器,则 shell 脚本文件无法复制,如上述错误,如果我能够设置复制文件,则 git 服务器无法访问说
返回状态码 128。 权限被拒绝(PublicKey、gssapi-keyex、gssapi-mic、密码)....
有没有办法使用 Jenkins 为不同的服务器添加多个 ssh 连接密钥?
下面是我的脚本代码,用于将部署脚本复制到远程服务器。
JenkinsMainScript.sh:
if [ $serverId = 'B' ]
then
scp $scriptSourcePath/serverB.sh $serverBPathToCopyTheFile/
ssh -l $serverBUserName $IpAddr $serverBPathToExecuteTheFile/serverB.sh
else
echo " No Matching condition found..."
fi
这是 Jenkins 中为 job2 配置的屏幕截图:
谁能帮我解决这个问题。 提前致谢
【问题讨论】: