183

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

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

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

4

16 に答える 16

198

ユーザーに変更し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)?

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

于 2013-03-04T06:54:23.287 に答える
55

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に移動してビルドを実行します

楽しみ!!!

幸運を

于 2014-11-17T13:12:53.597 に答える
31

または、次を使用できます。

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

要旨からの抜粋。

于 2015-12-02T14:17:20.453 に答える
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をクリアします

Jenkinsとして接続します

sudo su jenkins

jenkinsコマンドを試してください

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

問題が発生しない場合、jenkinsはリポジトリに接続できるようになります(少なくとも私にとっては^^)

于 2014-04-03T08:06:34.617 に答える
6

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

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

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

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

于 2019-09-04T15:16:52.210 に答える
4

https://bitbucket.org/YYYY/XX.gitを使用

username@を削除する必要があります

于 2014-05-11T05:46:34.967 に答える
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ディレクトリ内のファイルのデフォルトのアクセス許可を変更しないでください。さまざまな問題が発生します。

于 2015-10-02T16:36:08.253 に答える
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'
于 2018-02-28T22:57:47.067 に答える
3
  1. "sudo su -s / bin /bashjenkins"を使用してjenkinsとしてログインします
  2. キーエラーの原因となる目的のリポジトリをgitcloneします
  3. はい/いいえ(yesまたはyを入力)を表示してキーを追加するように求められます

それでおしまい!

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

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

于 2018-11-28T19:14:25.570 に答える
3

この問題が発生しましたが、jenkinsサービスがjenkinsユーザーとして実行されていなかったことが問題であることがわかりました。したがって、jenkinsユーザーとしてコマンドを実行すると問題なく動作しました。

于 2019-02-28T18:46:15.230 に答える
2

Jenkinsfileまたは任意の場所で「https」URL形式の「giturl」を使用できる最善の方法。

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

于 2016-05-11T10:01:11.067 に答える
2

SSH

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

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

試す

ssh-keygen-Rホスト名

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

于 2017-01-02T11:55:30.470 に答える
0

問題は/var/lib/jenkins/.ssh/known_hostsにあります。最初のケースには存在しますが、2番目のケースには存在しません。これは、別のシステムで実行しているか、2番目のケースがchrootでジェイルされているか、ファイルシステムの残りの部分から分離されていることを意味します(これは、jenkinsからランダムコードを実行するための良いアイデアです)。

次のステップは、このユーザーのchrootがどのように作成されているかを調べ、このchroot内の既知のホストを変更することです。または、ssh-keyscan、StrictHostKeyChecking = noなど、既知のホストを無視する他の方法を使用します。

于 2020-10-05T02:48:23.887 に答える
0

ssh-keygenの後、おそらく公開鍵をリモートホストにコピーする必要があるのは次のとおりです。

ssh-copy-id -i ~/.ssh/mykey user@host
于 2021-09-20T14:55:21.293 に答える
0

ssh-keyscanを使用する方がはるかに簡単です。

ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts

このコマンドは、必要なすべてのホストをに配置します~/.ssh/known_hosts。このコマンドは、Jenkinsマシン内で実行する必要があります。また、ジョブを作成し、そのコマンドをそのジョブの構成の「シェルの実行」セクションに配置してから、ジョブを実行することもできます。

于 2022-03-02T08:01:54.773 に答える