Jenkins gitプラグインがbitbucket.orgのプライベートgitリポジトリで認証を受けることができません。 ssh-keygenを使用して秘密鍵と公開鍵のペアを生成し、公開鍵をssh鍵アカウントページのbitbucketアカウントに設定しました。
ジョブ構成ページで、ソースコード管理セクションを次のように設定しました。
Repository URL: [email protected]:mproject.git (the SSH url for clone)
Credentials: The private key id_rsa generated by ssh-keygen (no passphrase) and user git.
すぐに次のエラーが発生します。
Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h [email protected]:myproject.git HEAD" returned status code 128:
stdout:
stderr: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
シェルのワークスペースディレクトリのコマンドラインから同じgitコマンドを実行すると、正常に動作します。 〜/ .bashrcをビルド環境/プロパティファイルパスで指定したので、jenkinsジョブで実行したときに何が異なるのか混乱しています。
私のjenkinsマシンには2人のユーザー(jenkinsとroot)しかいないので、ユーザーjenkinsとしてgitコマンドを実行していました。ユーザーjenkinsのホームディレクトリは/ home/jenkinsです。私のjenkinsジョブは、匿名のユーザーとして実行されます。これは問題でしょうか?
次の.sshファイルがあります。
-rw-r--r--. 1 jenkins jenkins 89 Apr 25 11:18 config
-rw-r--r--. 1 jenkins jenkins 137 Apr 24 13:56 environment
-rw-------. 1 jenkins jenkins 1766 Apr 24 13:54 id_rsa
-rw-r--r--. 1 jenkins jenkins 425 Apr 24 13:54 id_rsa.pub
-rw-r--r--. 1 jenkins jenkins 806 Apr 25 12:06 known_hosts
drwx------. 2 jenkins jenkins 85 Apr 25 12:05 .ssh
おそらく、あなたはjenkinsユーザーではなく、ユーザーにsshキーを追加しました。
デフォルトでは、JenkinsはユーザーJenkinsによって実行され、ホームディレクトリは(デフォルトでは)/var/lib/jenkins
。私の仮説を確認するには、jenkinsユーザーとしてログインしてください:
su jenkins
そして呼び出す:
git -c core.askpass=true ls-remote -h [email protected]:myproject.git HEAD
エラーが返されるかどうかを確認します。
/var/lib/jenkins/.ssh
ディレクトリには、適切なssh
キーが含まれています。追加する必要がありますid_rsa.pub
そのディレクトリからbitbucketのアカウントに。
次に設定したジョブ構成で:
Repository URL: [email protected]:ntti3/gtip.git
Credentials: - none -
説明されている構成は、bitbucketを使用したJenkinsで動作します。
.sshディレクトリに適切なアクセス権が設定されていることも確認してください。 sshは 'too open'ディレクトリが好きではありません:
-rw------- 1 jenkins jenkins 407 Apr 14 14:14 authorized_keys
-rw------- 1 jenkins jenkins 1676 Nov 25 16:37 id_rsa
-rw-rw-r-- 1 jenkins jenkins 400 Nov 25 16:38 id_rsa.pub
-rw-r--r-- 1 jenkins jenkins 3096 Feb 11 12:11 known_hosts
drwx------ 2 jenkins jenkins 4096 Apr 14 14:14 .ssh
私の場合、問題は、jenkinsユーザーがホームディレクトリ/ home/jenkinsを使用してすでに作成されていることと、jenkinsをrootとしてインストールすることに関係しています。これにより、ホームディレクトリが/ var/lib/jenkins(通常)であったかどうかと/ home/jenkinsの間で混乱が生じた可能性があります。修正は:
助けてくれてありがとう。
私の場合、問題はRSAキーのフィンガープリントでした。ドキュメントに記載されているようにJenkinsユーザーのsshキーを追加しましたが、同じエラーメッセージが表示されました。 Jenkinsユーザーとしてログインして解決しました
Sudo su jenkins
次に、次のように入力しました
git -c core.askpass=true ls-remote -h ssh://git@SERVER/PROJECT/REPO.git HEAD
そして、次のメッセージを受け取りました
The authenticity of Host 'SERVER ([IP_ADDRESS]:PORT)' can't be established. RSA key fingerprint is 11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:ff. Are you sure you want to continue connecting (yes/no)?
この質問に「はい」と答えることで、Bitbucketサーバーが既知のホストのリストに追加され、実際に問題が解決しました。
ssh.bashの場合
ssh -K ${PATH}/.ssh2/id_rsa_2048_b $*
export GIT_SSH = ${PATH}/ssh.bash