web-dev-qa-db-ja.com

UbuntuのJenkinsユーザーのGitHubからの取得中にアクセス許可が拒否されました(公開キー)

私のセットアップは次のとおりです。

  1. JenkinsはLinuxマシンで「jenkins」ユーザーとして実行されています。
  2. Linux-Gitのセットアップ 」で説明したように、「jenkins」ユーザー用にsshキーペアを生成しました。
  3. 私がSudo su jenkinsssh -vT [email protected]、パスフレーズは常に聞かれますが、最終的には常に認証されます。 (詳細オプションは、使用されているキーなどを示します)。
  4. Jenkinsを使用してGitHubからリポジトリを複製できます。

したがって:

jenkins@alpm:~/jobs/test git/workspace$ git pull 
Enter passphrase for key '/var/lib/jenkins/.ssh/id*_rsa':
Already up-to-date.

ここまで、私は手紙の指示に従いました。問題は、Jenkinsジョブが次のエラーで失敗することです。

status code 128:
stdout: 
stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly

これは、パスフレーズをタイプミスしたときと同じエラーです(ただし、もちろん、Jenkinsはパスフレーズを要求しません)。以下のページ:

ssh-agentがパスフレーズを思い出すのに役立つ可能性があることを示します。これは、自分のユーザーを使用している場合に有効ですが、jenkinsidではありません。通常のユーザーとして実行している間は次のことに注意してください。

echo "$SSH_AUTH_SOCK"
/tmp/keyring-nQlwf9/ssh

私の「ジェンキンス」と同じコマンドを実行している間は何も得られません(許可さえ拒否されません)

問題の私の理解は、パスフレーズが記憶されていないということです。何かアイデアはありますか? jenkinsユーザーのssh-agentまたはキーリングマネージャーを起動しますか?どうやって?または、同じマシンに転送するときにssh転送は適していますか?より明るいアイデアはありますか?

ps:Sudo gitted、私は常にjenkinsまたはユーザーアカウントを使用しました(このSO post- buntu/GitHub SSH Key Issue )で述べたように)

31
pimajor

数ヶ月間、誰もコメントから回答を書いていないので、私はすぐにそうします。

2つの問題/解決策があります。

  1. id_rsaが間違ったユーザーで作成されました

    Jenkinsユーザーとしてid_rsaを作成します( hudsonはgitリポジトリから取得できません

  2. パスフレーズを空のままにする

41
Patrick Boos

Jenkinsサーバーで行わなければならないことを要約するには:

# 1. Create the folder containing the SSH keys if necessary
if [ ! -e ~jenkins/.ssh ]; then mkdir ~jenkins/.ssh; fi
cd ~jenkins/.ssh/

# 2. Create the SSH pair of keys
# The comment will help to identify the SSH key on target systems
ssh-keygen -C "jenkins" -f ~jenkins/.ssh/id_rsa -P ""

# 3. Assign the proper access rights
chown -R jenkins ~jenkins/.ssh/
chmod 700 ~jenkins/.ssh
chmod 600 ~jenkins/.ssh/*

覚えておいてください:

  • キーを生成するときは、デフォルトの「id_rsa」名のままにしてください。「id_rsa_jenkins」などは、正しく設定されていても機能しません。
  • キーにパスフレーズを使用しないでください
  • 公開鍵(id_rsa.pub)がgitサーバー(GitHub、Bitbucketなど)にアップロードされていることを確認します。完了したら、次を実行してSSHキーをテストします:ssh -vvv [email protected](gitサーバーに応じてアドレスを変更します)
8
Paul Podgorsek

キーを作成するときにパスフレーズを空のままにしておくことで、この問題を回避しました。

8
Marco Corona

キーを手動で作成した場合、それらはまだ所有されている可能性があり、jenkinsが読み取れない場合があることを追加します。

Sudo chown jenkins -R /var/lib/jenkins/.ssh/*
3
stoyan

確認するには、次のとおりです。

  1. 正しい公開キー(id_rsa.pub)がgit-serverにアップロードされている場合。
  2. jenkinsユーザーはgithub-> to CHECKにアクセスします正しい秘密キー(id_rsa)が/var/lib/jenkins/.ssh/
  3. known_hostsファイルが〜/ .sshフォルダー内に作成されている場合。デバッグログを表示するには、ssh -vvv [email protected]を試してください。問題がなければ、github.comがknown_hostsに追加されます。
  4. id_rsaの許可が755に設定されている場合(chmod 755 id_rsa)

すべてのチェックの後-> try ssh -vvv [email protected] sshが動作するまでjenkinsで設定を試行しないでください!

2
Tim Long

Windowsでjenkinsをサービスとして実行している場合は、サービスを実行しているユーザーを確認する必要があります。ユーザー「MACHINENAME\user」を使用してキーを作成した場合、それを実行するユーザーが一致できるようにサービスを変更します

1

Macユーザーの場合、次の手順に従って既存のキーを削除し、新しい秘密キーと公開キーを作成することで問題を解決できます。

1.すべての公開キーと秘密キーを削除します/Users/Username/.sshにあります

2. JenkinsのCredentialsタブに保存されているすべての資格情報を削除します。

3.既存の公開SSHキーを削除しますGithub Repository Settingsで定義されています。

4.新しいSSHキー(プライベートおよびパブリック:id_rsaおよびid_rsa.pub)を作成しますhttps://confluence.atlassian.com/bitbucketserver/creating-sshからの手順に従って-keys-776639788.html#CreatingSSHkeys-CreatinganSSHkeyonLinux&MacOSX

5.新しく作成した公開SSHキー(id_rsa.pub)をGithubまたは同等のリポジトリ設定に設定します。

6. Jenkinsで、新しい資格情報を作成しますGithubユーザー名にプライベートSSHキー(id_rsa)を追加します。

7.エラーはすぐに削除されます。

1
DeveloperIOS

キーはjenkinsユーザーから生成する必要があります。

Sudo su jenkins
ssh-keygen

キーが生成されたら、bitbucketまたはgithubでsshキーとして追加する必要があります。

0
blazehub