maven 3 site-deploy卡在Jenkins构建中的身份验证提示中

时间:2013-08-21 20:37:43

标签: maven jenkins maven-3 cloudbees

使用site-deploy时如何摆脱此提示? “你确定要继续连接吗?”

我知道这个问题已被多次询问(linklink),但建议的解决方案对我不起作用,我会解释原因。

哦,我发布了几乎完全相同的问题here

解决方案的目的是:

# Run this manually:
ssh -o UserKnownHostsFile=foo javadoc.foo.com

# Take that file and put it in your private DAV share, and then
ssh -o UserKnownHostsFile=/private/<account>/known_hosts javadoc.foo.com

99%的情况下,这项工作一直很好,但是使用这个解决方案,我们偶尔会在日志中一遍又一遍地得到以下文字:

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
3d:69:41:8a:ec:d1:4c:d9:75:ef:7d:71:b7:7d:61:d0.
Please contact your system administrator.
Add correct host key in known_hosts to get rid of this message.
Do you want to delete the old key and insert the new key? (yes/no)

所以,回到我的问题:简而言之,问题是: 当我运行mvn site-deploy时,它会陷入Jenkins的无限循环中:

The authenticity of host 'javadoc.foo.com' can't be established.
RSA key fingerprint is 3d:69:41:8a:ec:d1:4c:d9:75:ef:7d:71:b7:7d:61:d0.
Are you sure you want to continue connecting? (yes/no)
The authenticity of host 'javadoc.foo.com' can't be established.
RSA key fingerprint is 3d:69:41:8a:ec:d1:4c:d9:75:ef:7d:71:b7:7d:61:d0.
Are you sure you want to continue connecting? (yes/no)

发生这种情况的机器是CloudBees机器,因此它不是我们拥有的机器。换句话说,每次我们进行构建时,都会为我们提供一台全新的机器。

我们的settings.xml类似于:

<server>
    <id>javadoc.foo.com</id>
    <username>username</username>
    <password>password</password>
</server>

如果它是我们拥有和控制的机器,我们可以在那里手动ssh并运行一次ssh命令以便修复它,但就像我说的那样,这些机器是动态配置给我们的。

由于我们使用的是maven 3而不是maven 2,因此我们无法将以下内容添加到settings.xml的服务器部分:

<configuration>
    <knownHostsProvider implementation="org.apache.maven.wagon.providers.ssh.knownhost.NullKnownHostProvider">
        <hostKeyChecking>no</hostKeyChecking>
    </knownHostsProvider>
</configuration>

有没有办法:

  1. 以编程方式回答是(这不是自由式的Jenkins工作;这是Maven项目。)
  2. site-deploy的替代方法(pom.xml中的ant代码?)
  3. 如果这个问题没有得到解答,那么网站部署失败,这样Jenkins构建就不会一遍又一遍地重复这个问题来填充磁盘空间。
  4. 告诉site-deploy插件将stricthostkeychecking设置为“no”
  5. 我想避免任何可以调整ssh设置的预构建步骤;我更愿意调整settings.xml,pom.xml或maven选项。

    尽管如此,我对任何建议持开放态度。

5 个答案:

答案 0 :(得分:2)

您可以使用此 settings.xml 配置来管理它:

<server>
  <id>site</id>
  <username>_your_login_user_</username>
  <privateKey>_path_to_key_identify_file</privateKey>
  <configuration>
    <strictHostKeyChecking>no</strictHostKeyChecking>
    <preferredAuthentications>publickey,password</preferredAuthentications>
    <interactive>false</interactive>
  </configuration>
</server>

以及以下 pom.xml

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-site-plugin</artifactId>
   <version>3.6</version>
     <dependencies>
       <dependency><!-- add support for ssh/scp -->
           <groupId>org.apache.maven.wagon</groupId>
           <artifactId>wagon-ssh</artifactId>
           <version>2.12</version>
       </dependency>
     </dependencies>
 </plugin>

问题https://issues.apache.org/jira/browse/WAGON-467一直在解决 strictHostKeyChecking 参数的wagon-ssh插件,并且已在最近的版本中得到解决。

答案 1 :(得分:1)

添加一个shell预构建步骤,用内容创建〜/ .ssh / config:

StrictHostKeyChecking no

答案 2 :(得分:1)

echo yes | mvn site:deploy 

尽管尝试了许多其他路线,但还是为我完全解决了这个问题。

答案 3 :(得分:0)

我无法找到解决方法。使用这个没有用:org.apache.maven.wagon.providers.ssh.knownhost.NullKnownHostProvider,这似乎是一个已知的问题。

但是假设您使用某种类型的unix盒子,您可以执行此操作作为解决方法,如果您不想更改ssh配置,则在提示时发送是:

echo yes | mvn site:deploy 

答案 4 :(得分:0)

对于有人不使用StrictHostKeyChecking no的情况,以及有人在Windows上遇到此问题的情况,我还有另一种解决方案:

通常可以在以下位置找到您的known_hosts

  

C:\ Users \ <您的用户名> \。ssh \ known_hosts

对于Jenkins的Windows服务安装,应将known_hosts复制到:

  

C:\ Windows \ System32 \ config \ systemprofile \ .ssh \

或者对于Jenkins 64位版本而言:

  

C:\ Windows \ SysWOW64 \ config \ systemprofile \ .ssh \

对于Unix / Linux系统,使用模拟路径-将您帐户中的known_hosts(或仅其中一部分)复制到Jenkins用户。