web-dev-qa-db-ja.com

bitbucketへのsshアクセスが可能なJenkins gitプラグイン:権限が拒否されました(公開鍵)。致命的:リモートリポジトリから読み取れませんでした

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
12
Farrukh Najmi

おそらく、あなたは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
16
kkamilpl

私の場合、問題は、jenkinsユーザーがホームディレクトリ/ home/jenkinsを使用してすでに作成されていることと、jenkinsをrootとしてインストールすることに関係しています。これにより、ホームディレクトリが/ var/lib/jenkins(通常)であったかどうかと/ home/jenkinsの間で混乱が生じた可能性があります。修正は:

  1. userdel jenkins #jenkinsユーザーの削除
  2. rm -rf/home/jenkins; rm -rf/var/lib/jenkins#古いjenkinsディレクトリを削除
  3. Jenkinsユーザーを作成する通常のプロセスとしてjenkinsを再度インストールします
  4. mkdir /var/lib/jenkins/.ssh; chmod 700 /var/lib/jenkins/.ssh
  5. cd /var/lib/jenkins/.ssh
  6. Ssh-keygenを使用してキーペアを作成し、ビットバケットなどにキーを追加します。
  7. 新しく作成したid_rsaファイルの認証情報をjenkinsで作成する
  8. リポジトリurlとid_rsa.pubファイルでgitプラグインを使用する新しいプロジェクトを作成する

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

3
Farrukh Najmi

私の場合、問題は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サーバーが既知のホストのリストに追加され、実際に問題が解決しました。

0
smehrlapf

ssh.bashの場合

ssh -K ${PATH}/.ssh2/id_rsa_2048_b $*

export GIT_SSH = ${PATH}/ssh.bash
0
Chuanzhou Tang