Jenkinsホストキーの検証に失敗しました


164

jenkinsに問題があり、「git」を設定すると、次のエラーが表示されます。

Failed to connect to repository : Command "git ls-remote -h https://person@bitbucket.org/person/projectmarket.git HEAD" returned status code 128:
stdout:
stderr: fatal: Authentication failed

私はsshでテストしました:

git@bitbucket.org:person/projectmarket.git

これはエラーです:

Failed to connect to repository : Command "git ls-remote -h git@bitbucket.org:person/projectmarket.git HEAD" returned status code 128:
stdout:
stderr: Host key verification failed.
fatal: The remote end hung up unexpectedly

また、「SSHキー」でこれらの手順を実行しました。

Jenkinsでログイン

sudo su jenkins

githubキーをJenkins .sshフォルダーにコピーします

cp ~/.ssh/id_rsa_github* /var/lib/jenkins/.ssh/

キーの名前を変更する

mv id_rsa_github id_rsa
mv id_rsa_github.pub id_rsa.pub

しかし、ジェンキンスではまだgitリポジトリが機能していません。

助けてくれてありがとう!



jenkinsユーザーは存在しません
IceFire

回答:


183

jenkinsユーザーに変更し、コマンドを手動で実行します。

git ls-remote -h git@bitbucket.org:person/projectmarket.git HEAD

最初にSSH経由で新しいホストに接続すると、標準のSSH警告が表示されます。

The authenticity of host 'bitbucket.org (207.223.240.181)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?

入力しyes、Enterキーを押します。のホストキーbitbucket.org~/.ssh/known_hostsファイルに追加され、Jenkinsでこのエラーが発生しなくなります。


6
これを表示:権限が拒否されました(公開鍵)。致命的:リモートエンドが突然ハングアップした
AMメリダ

6
そうですが、それはまったく別のエラーです。次に、bitbucket.orgでリポジトリに公開鍵を追加する必要があります。
2013年

4
ここのステップ6を参照してください:confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git
ctc

2
「worksforme」の+1には、まったく同じ問題がありました。適切なユーザーのid_rsaを作成し、jenkinsにchmodし、公開鍵を追加しましたが、それでも機能しませんでした。sudo -u jenkinsとしてgitを試すとknonwn_hostsファイルが生成され、問題が修正されました。
sibidiba 2013年

3
Jenkinsを実行しているユーザーとして実行する必要があります。ほとんどのシステムでは、通常、別のユーザー(「jenkins」ユーザーなど)として実行します。したがって、そのユーザーに切り替えて、bitbucket.orgのアドレスが〜/ .ssh / known_hostsに追加されていることを確認する必要があります。
ctc 2014

43

Jenkinsはサービスアカウントであり、設計によるシェルはありません。そのサービスアカウントは一般に受け入れられています。インタラクティブにログインできないようにする必要があります。

「Jenkinsホストキーの検証に失敗しました」を解決するには、次の手順を実行します。私はジェンキンスで水銀を使用しました。

1)端末で次のコマンドを実行します

             $ sudo su -s /bin/bash jenkins

パスワードを提供する

2)次のコマンドを使用して公開秘密鍵を生成します。

              ssh-keygen

あなたは出力を見ることができます::

Generating public/private rsa key pair. 
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

3)Enterキーを押します->パスフレーズを入力しないでください-> Enterキーを押します

             Key has been generated

4)-> cat /var/lib/jenkins/.ssh/id_rsa.pubに移動します

5)id_rsa.pubからキーをコピーします

6)bashを終了する

7) ssh@yourrepository

8) vi .ssh/authorized_keys

9)キーを貼り付けます

10)終了

11)Mercurialサーバーに手動でログイン

注:Plsは手動でログインします。そうしないと、jenkinsは再び「ホストの検証に失敗しました」というエラーを返します

12)手動で完了したら、Jenkinsに移動してビルドを実行します

楽しい!!!

幸運を


ここで要求されるパスワードは何ですか?
IceFire

26

または、以下を使用できます。

ssh -oStrictHostKeyChecking=no host

これは安全ではありません(中間者攻撃)が、最も簡単な解決策です。

これを行うためのより良い方法は、ホストとIPアドレス間の正しいマッピングを生成することですssh

#!/bin/bash

for domain in "github.com" "bitbucket.org"; do
    sed -i "/$domain/d" ~/.ssh/known_hosts
    line=$(ssh-keyscan $domain,`nslookup $domain | awk '/^Address: / { print $2 ; exit }'`)
    echo $line >> ~/.ssh/known_hosts
done

要旨から抜粋。


3
これにより、潜在的なMITM攻撃が可能になります。
2015

1
-oStrictHostKeyChecking = noを追加して1回接続すると、ホストがknown_hostsファイルに追加され(コマンドラインでsshを押してyesと入力してキーをknown_hostsファイルに追加する場合と同じ)、その後このオプションを削除します。
krupan

6

同じ問題があったので、私はそれをそのように修正しました:

現在のユーザーに対してのみid_rsa *のアクセス権をリセットします

chmod o-rwx ~/.ssh/id*
chmod G-rwx ~/.ssh/id*

ls -lart ~/.ssh/


-rw-------  1 jenkins nogroup  398 avril  3 09:34 id_rsa.pub
-rw-------  1 jenkins nogroup 1675 avril  3 09:34 id_rsa

そして、〜/ .ssh / know_hostsをクリアします

今ジェンキンスとして接続

sudo su jenkins

jenkinsコマンドを試す

git ls-remote -h git@bitbucket.org:user/project.git HEAD

問題がなければ、ジェンキンスはレポを接続できるようになります(少なくとも私にとっては^^)


1
グループ権限を変更する上記のコマンド(chmod G-rwx〜/ .ssh / id *)が失敗しました。以下は希望どおりに機能しました。chmod g-
rwx〜


3
  • エラーをスキップするためにデフォルトのsshd_configプロパティを編集していないことを確認してください

  • ホストの検証に失敗しました- known_hostsファイル内のホスト名のエントリが欠落しています

  • プロセスが失敗しているサーバーにログインし、次の手順を実行します。

    1. プロセスを実行しているユーザーにSudo

    2. ssh-copy-id destinationuser@destinationhostname

    3. 初めてこのようにプロンプ​​トが表示されます。「はい」と言って、初めてパスワードを要求します。

      The authenticity of host 'sample.org (205.214.640.91)' can't be established.
      RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
      Are you sure you want to continue connecting (yes/no)? *yes*
      

      パスワードプロンプト?パスワードを与える

    4. 次に、プロセスが実行されているサーバーから、を実行しますssh destinationuser@destinationhostname。パスワードなしでログインする必要があります。

      注:ユーザーの.sshディレクトリにあるファイルのデフォルトの権限を変更しないでください。別の問題が発生します。


手順3で、ファイルに既に存在するキーでプロンプトが表示される場合がありますが、この4つの手順を続行する必要があります。jenkinsユーザーからのパスワードなしでログインできる場合は、すべて設定されています。
Rakibul Haq

3

回避策(Windowsスレーブなど)については、グローバルプロパティで次の環境変数を定義します。

GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"

Jenkins、グローバルプロパティ、環境変数、GIT_SSH_COMMAND

注:このオプションが表示されない場合は、おそらくEnvInjectプラグインが必要です


3

bitbucketとgithubの両方からホストキーをコピーします。

ssh root@deployserver 'echo "$(ssh-keyscan -t rsa,dsa bitbucket.org)" >> /root/.ssh/known_hosts'
ssh root@deployserver 'echo "$(ssh-keyscan -t rsa,dsa github.com)" >> /root/.ssh/known_hosts'

2

Jenkinsfile内または任意の場所で、「git url」を「https」URL形式で使用できる最良の方法。

git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'


2

SSH

SSHで試行している場合、いくつかの理由でホストキー検証エラーが発生する可能性があります。すべての理由を克服するには、次の手順に従ってください。

  1. 環境変数をHOMEに設定し、.sshフォルダーのルートディレクトリとしてアドレスを指定します。例:-.sshがNameフォルダー内に保持されている場合。C:/ユーザー/名前。
  2. 次に、公開SSHキーがリポジトリリンクでも提供されていることを確認します。github、bitbucket、またはその他のいずれかです。
  3. git bashを開きます。そして、リポジトリからプロジェクトを複製してみてください。これは、.sshフォルダーに自動作成されるknown_hostファイルにリポジトリURLを追加するのに役立ちます。
  4. 次にjenkinsを開き、新しいジョブを作成します。次に、構成をクリックします。
  5. Gitのソースコード管理で複製URLを提供します。URLはgit@github.com / .........またはssh:// proje ........で始まる必要があります
  6. 資格情報の下で、プロジェクトを複製するリポジトリフォームのユーザー名とパスワードを追加する必要があります。その資格情報を選択します。
  7. そして、設定を適用して保存します。
  8. ビンゴ!プロジェクトの構築を開始します。これで、ホストキーの検証エラーが発生しないことを願っています。

2
  1. 「sudo su -s / bin / bash jenkins」を使用してjenkinsとしてログインします。
  2. キーエラーの原因となる目的のリポジトリをgit cloneします
  3. はい/いいえを表示して、キーを追加するように求められます(はいまたはyを入力)

それでおしまい!

これでjenkinsジョブを再実行できます。

これで問題が解決することを願っています。


2

この問題に遭遇したところ、jenkinsサービスがjenkinsユーザーとして実行されていないことが問題であることがわかりました。したがって、jenkinsユーザーとしてコマンドを実行しても問題はありませんでした。


1

試す

ssh-keygen -Rホスト名

-R hostnameホスト名に属するすべてのキーをknown_hostsファイルから削除します。このオプションは、ハッシュされたホストを削除するのに役立ちます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.