web-dev-qa-db-ja.com

Jenkins:リポジトリへの接続に失敗しました

Githubリポジトリでジェンキンを接続しようとしています。

Repo URL jenkinsを指定すると、次のエラーメッセージが返されます。

リポジトリへの接続に失敗しました:コマンド "git ls-remote -h [email protected]:adolfosrs/jenkins-test.git HEAD"がステータスコード128を返しました:stdout:stderr:ホストキーの検証に失敗しました。致命的:リモートリポジトリから読み取ることができませんでした。正しいアクセス権があり、リポジトリが存在することを確認してください。

HTTPS:// Urlを使用すると、jenkinsは以下を返します。

リポジトリへの接続に失敗しました: https://github.com/adolfosrs/jenkins-test.git (status = 407)への接続に失敗しました

Jenkinsが実行されているのと同じマシンでリポジトリのクローンを作成でき、git ls-remote -h [email protected]:adolfosrs/jenkins-test.git HEADコマンドも実行できます。そのため、githubに適切なSSHがあります。

34
adolfosrs

問題は、どういうわけかrootユーザーでsshファイルを作成したことです。そのため、ファイルの所有者はrootでした。

ソリューションは、所有権をjenkinsユーザーに変更するだけでした。

chown jenkins id_rsa.pub 
chown jenkins id_rsa
16
adolfosrs

これは非常に厄介な問題です-証明書を使用してhttpsで物事がどのように機能するかに精通している場合でも(OTOHで私の回避策を見ると、非常に論理的なようです:)

シェルからhttp(s)を介してGITリポジトリに接続する場合、パブリック証明書がマシンに(ファイルとして)保存されていることを確認してください。次に、その証明書をGIT構成に追加します

git config [--global] http.sslCAInfo "certificate"

(「証明書」をPEMファイルの完全なパス/名前に置き換えてください:)

シェルを使用する場合も同様です。 http-serverログインの資格情報を提供する「.netrc」を指定します。これを行うと、資格情報のインタラクティブなプロビジョニングなしで「git clone https:// ...」を実行できるようになります。

ただし、Jenkinsサービスの場合は少し異なります...ここでは、jenkinsプロセスはサーバー証明書を認識する必要があり、シェル設定(グローバルgit構成ファイル '.gitconfigの意味で)を使用しません'):P

私がする必要があるのは、Jenkinsの起動オプションに別のパラメーターを追加することです。

... -Djavax.net.ssl.trustStore = "keystore" ...

(以下で説明するように、「キーストア」を完全なパス/名前に置き換えます。)

次に、証明書を保持しているWebサーバーのキーストアファイルを何らかのパスにコピーします(これは汚いハッキングであり、 ではない正確に secure :)そして、「-Djavax.net.ssl.trustStore =」パラメーターでそれを参照します。

これで、Jenkinsサービスは、httpsを介してリポジトリを提供するWebサーバーからの証明書を受け入れます。 GITリポジトリのURLを次のように構成します

https://yourserver.com/your-repositorypath

ログオンには、jenkins-userホームフォルダーの下に「.netrc」が必要です。 したがって、適切に機能する資格情報ヘルパープラグインが提供されるまでは、回避策と見なされることになります。私見このプラグイン(その現在のバージョン1.9.4)はバグです。

Jenkinsからクレデンシャルヘルパーを取得することはできませんでした:(最高の状態で、アクセスできない一時的なクレデンシャルヘルパーファイルなどに関するエラーを確認することができました。 JIRA、ただし修正なし。

だから誰かがそれをうまく動かせたら、知識を共有してください...


追伸:次のバージョンのJenkinsプラグインの使用:

クレデンシャルプラグイン1.9.4、GITクライアントプラグイン1.6.1、Jenkins GITプラグイン2.0.1

7
Juergen Klasen

私はまったく同じ問題を抱えていました。 Macで解決した方法は次のとおりです。

  1. Jenkinsユーザーへの切り替え(Sudo -iu jenkins)
  2. 実行:ssh-keygen(注-jenkinsユーザー用にsshキーペアを作成しています。次のように表示されます。キーを保存するファイルを入力します(/Users/Shared/Jenkins/.ssh/id_rsa):
  3. 最後までデフォルト値のEnterを押し続けます
  4. ターミナルでJenkinsエラーメッセージに表示されるコマンドを実行します(例: "git ls-remote -h [email protected]:adolfosrs/jenkins-test.git HEAD")
  5. 続行するかどうかを尋ねられます。イエスと言う
  6. Githubリポジトリは、/ Users/Shared/Jenkins/.ssh /のknown_hostsファイルに追加されます。
  7. Jenkinsポータルに戻り、Github SSH URLを試してください
  8. 動作するはずです。幸運を
4
Caleb Cheng

WindowsサーバーのジェンキンをプライベートGITリポジトリに接続しようとすると、同様の問題に直面しました。以下は、Jenkinsジョブのソースコード管理セクションで返されるエラーです。

リポジトリへの接続に失敗しました:コマンド "git.exe ls-remote -h ssh://git@my_server/repo.git HEAD"がステータスコード128を返しました:stdout:stderr:ロードキー "C:\ Windows\TEMP\ssh4813927591749610777。キー」:無効な形式git @ my_server:許可が拒否されました(公開キー)。致命的:リモートリポジトリから読み取ることができませんでした。

正しいアクセス権があり、リポジトリが存在することを確認してください。

このエラーは、jenkinsがユーザーディレクトリからプライベートsshキーを選択できないためにスローされます。私はこれを次の方法で解決しました

ステップ1

Jenkinsジョブで、Source Code Managementの下に次の情報を入力します

リポジトリ

リポジトリURL:ssh://git@my_server/repo.git
資格情報:-なし-

ステップ2

私のセットアップでは、jenkinsはローカルシステムアカウントで実行されているため、ユーザーディレクトリはC:\Windows\System32\config\systemprofileです(これはこのセットアップで重要なことで、あまり明らかではありません)。

ssh-keygen -t rsa -C "key label" Shellを介してgit bashを使用してssh秘密鍵と公開鍵を作成します。 sshの秘密鍵と公開鍵は、ログインしているユーザーディレクトリの.sshディレクトリの下にあります。 .sshフォルダーをコピーして、C:\Windows\System32\config\systemprofileの下に貼り付けるだけです

ステップ3

GITサーバーアカウントに公開キーを追加します。 jenkinsジョブを実行すると、jenkinsからssh経由でGITアカウントに接続できるようになります。

2
Rajaraman

この場合、gitをJenkinsサーバーにインストールする必要がありました。

2
030

Jenkinsは、通常のログインとしてではなく、別のユーザーとして実行されます。したがって、ssh問題を解決するには、次のようにします。

  1. Jenkins su jenkinsとしてログオンします(jenkinsのパスワードを設定するには、最初にSudo passwd jenkinsを実行する必要があります。デフォルトが見つかりませんでした...)
  2. Sshキーペアを生成します:ssh-keygen
  3. 公開鍵(id_rsa.pub)をgithubアカウント(またはどこでも)にコピーします
  4. リポジトリを複製しますジェンキンスとしてジェンキンスにホストを追加するにはknown_hosts必要です。必要に応じて、クローンリポジトリを再度削除できます。
2
David Engdal

以下の設定で確認してください。それは私のために常に機能します。

ジェンキンス構成:

1)git実行可能ファイルが適切に指定されているかどうかを確認します

2)git @ blahblahのSSHリポジトリリンクを提供します

3)認証情報>>ユーザー名と認証キーを選択します(サーバーに移動し、SSHキーを生成ssh-keygen ... JENKINS_HOME /、sshにキーをコピー)JenkinsからGITリポジトリに接続できるはずです

2
Harshal Vaidya

Ubuntuでは、id_rsaおよびid_rsa.pubファイルを/var/lib/jenkins/.sshに配置しました

Jenkinsがそれらを所有するSudo chown -R jenkins /var/lib/jenkins/.ssh/

JenkinsキーがGitHub(または同様の)でRWアクセスを持つデプロイキーとして追加されていることを確認します-これにはid_rsa.pubキーを使用します。

これで、すべてがSCM Sync Pluginを使用できるようになります。

1
Joseph Lust

私の場合、rootユーザーでknown_hostsファイルを編集しました。そのため、ファイルの所有権をルートに変更し、jenkinsユーザーはgitイメージのクローン作成中に「[email protected]:xxxxxx/xxxx.git HEAD」ステータスコード128:stdout:stderr:Host key validation failedをスローし始めました。所有権を元に戻します問題を解決しました。

0
funny_head

私の場合、私はこの問題を

  • クリックボタン Add 「資格情報」テキストの横にあります
  • 資格情報の追加(loginおよびpassword
  • の左側にあるポップアップメニューでこれらの資格情報を選択します Add ボタン
  • 数秒待つ

私の環境は、WindowsにインストールされたJenkinsでした。 UIの質問は、それを解決するツールの前に警告が配置された理由でした。

0
Roman

ここで、このタイプのエラーを生成する可能性のある非常に小さな問題の1つは、リポジトリURLに.git拡張がないことです。 .gitで終わる完全修飾URLを入力してください。私はbitbucketを使用しているため、「クローン」をクリックするだけで、完全修飾URLが自動的に生成されます。 githubでも同様のアプローチがあります。

0
user7123229

RSAホストキーとbitbucketサーバーのIPが「既知のホスト」ファイルに追加されていることを確認してください。内容は次のようになります

bitbucket.org,xx.xx.xx.xx ssh-rsa Host_key

/var/lib/jenkins/.ssh/のすべてのファイルの所有権をJenkinsに変更することを忘れないでください

0
shark1608

ここでは言及していませんが、これはスタッシュからも発生します。同じ問題が発生しました。問題の根本的な原因は、jenkinsに使用しているstashインスタンスがクラッシュしたことです。この場合、stashを再起動することで解決しました。

0