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があります。
問題は、どういうわけかrootユーザーでsshファイルを作成したことです。そのため、ファイルの所有者はrootでした。
ソリューションは、所有権をjenkinsユーザーに変更するだけでした。
chown jenkins id_rsa.pub
chown jenkins id_rsa
これは非常に厄介な問題です-証明書を使用して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を次のように構成します
ログオンには、jenkins-userホームフォルダーの下に「.netrc」が必要です。 したがって、適切に機能する資格情報ヘルパープラグインが提供されるまでは、回避策と見なされることになります。私見このプラグイン(その現在のバージョン1.9.4)はバグです。
Jenkinsからクレデンシャルヘルパーを取得することはできませんでした:(最高の状態で、アクセスできない一時的なクレデンシャルヘルパーファイルなどに関するエラーを確認することができました。 JIRA、ただし修正なし。
だから誰かがそれをうまく動かせたら、知識を共有してください...
追伸:次のバージョンのJenkinsプラグインの使用:
クレデンシャルプラグイン1.9.4、GITクライアントプラグイン1.6.1、Jenkins GITプラグイン2.0.1
私はまったく同じ問題を抱えていました。 Macで解決した方法は次のとおりです。
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キーを選択できないためにスローされます。私はこれを次の方法で解決しました
Jenkinsジョブで、Source Code Management
の下に次の情報を入力します
リポジトリ
リポジトリURL:ssh://git@my_server/repo.git
資格情報:-なし-
私のセットアップでは、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
の下に貼り付けるだけです
GITサーバーアカウントに公開キーを追加します。 jenkinsジョブを実行すると、jenkinsからssh経由でGITアカウントに接続できるようになります。
この場合、git
をJenkinsサーバーにインストールする必要がありました。
Jenkinsは、通常のログインとしてではなく、別のユーザーとして実行されます。したがって、ssh問題を解決するには、次のようにします。
su jenkins
としてログオンします(jenkinsのパスワードを設定するには、最初にSudo passwd jenkins
を実行する必要があります。デフォルトが見つかりませんでした...)ssh-keygen
id_rsa.pub
)をgithubアカウント(またはどこでも)にコピーしますknown_hosts
必要です。必要に応じて、クローンリポジトリを再度削除できます。以下の設定で確認してください。それは私のために常に機能します。
ジェンキンス構成:
1)git実行可能ファイルが適切に指定されているかどうかを確認します
2)git @ blahblahのSSHリポジトリリンクを提供します
3)認証情報>>ユーザー名と認証キーを選択します(サーバーに移動し、SSHキーを生成ssh-keygen ... JENKINS_HOME /、sshにキーをコピー)JenkinsからGITリポジトリに接続できるはずです
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を使用できるようになります。
私の場合、rootユーザーでknown_hostsファイルを編集しました。そのため、ファイルの所有権をルートに変更し、jenkinsユーザーはgitイメージのクローン作成中に「[email protected]:xxxxxx/xxxx.git HEAD」ステータスコード128:stdout:stderr:Host key validation failedをスローし始めました。所有権を元に戻します問題を解決しました。
私の場合、私はこの問題を
login
およびpassword
)私の環境は、WindowsにインストールされたJenkinsでした。 UIの質問は、それを解決するツールの前に警告が配置された理由でした。
ここで、このタイプのエラーを生成する可能性のある非常に小さな問題の1つは、リポジトリURLに.git
拡張がないことです。 .git
で終わる完全修飾URLを入力してください。私はbitbucketを使用しているため、「クローン」をクリックするだけで、完全修飾URLが自動的に生成されます。 githubでも同様のアプローチがあります。
RSAホストキーとbitbucketサーバーのIPが「既知のホスト」ファイルに追加されていることを確認してください。内容は次のようになります
bitbucket.org,xx.xx.xx.xx ssh-rsa Host_key
/var/lib/jenkins/.ssh/
のすべてのファイルの所有権をJenkinsに変更することを忘れないでください
ここでは言及していませんが、これはスタッシュからも発生します。同じ問題が発生しました。問題の根本的な原因は、jenkinsに使用しているstashインスタンスがクラッシュしたことです。この場合、stashを再起動することで解決しました。