使用site-deploy时如何摆脱此提示? “你确定要继续连接吗?”
我知道这个问题已被多次询问(link,link),但建议的解决方案对我不起作用,我会解释原因。
哦,我发布了几乎完全相同的问题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>
有没有办法:
我想避免任何可以调整ssh设置的预构建步骤;我更愿意调整settings.xml,pom.xml或maven选项。
尽管如此,我对任何建议持开放态度。
答案 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用户。