2

site-deploy を使用しているときにこのプロンプトを表示しないようにするにはどうすればよいですか? 「接続を続行してもよろしいですか?」

この質問が何度も出されていることは知っていますが (リンクリンク)、推奨される解決策がうまくいかないので、その理由を説明します。

ああ、私はここにまったく同じ質問を投稿しました

解決策は次のとおりです。

# 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 コマンドを 1 回だけ実行して問題を解決できますが、前述のように、これらのマシンは動的にプロビジョニングされます。

Maven 2 ではなく Maven 3 を使用しているため、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. この質問への回答が得られない場合、 site-deployは失敗します。これにより、Jenkins ビルドが、この質問が何度も繰り返されることでディスク領域がギグいっぱいになることはありません。
  4. site-deploy プラグインに stricthostkeychecking を「no」に設定するように指示します

ssh 設定を微調整できるビルド前の手順は避けたいと思います。settings.xml、pom.xml、または maven オプションを微調整したいと思います。

それにもかかわらず、私はどんな提案にもオープンです。

4

5 に答える 5

4

この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 プラグインに対処しており、最近のバージョンでは解決されています。

于 2017-03-27T14:17:27.570 に答える
1

~/.ssh/config with content を作成するためのシェルのビルド前ステップを追加します。

StrictHostKeyChecking no

于 2013-08-22T09:15:57.623 に答える
1
echo yes | mvn site:deploy 

他の多くのルートを試したにもかかわらず、これを完全に修正しました。

于 2021-02-17T13:34:39.513 に答える
0

これを回避する方法が見つかりませんでした。これを使用しても機能しませんでした: org.apache.maven.wagon.providers.ssh.knownhost.NullKnownHostProvider。これは既知の問題のようです。

しかし、ある種の UNIX ボックスを使用していると仮定すると、ssh 構成を変更したくない場合に、プロンプトが表示されたときに yes を送信する回避策としてこれを行うことができます。

echo yes | mvn site:deploy 
于 2016-03-04T10:19:34.440 に答える