私のセットアップは次のとおりです。
Sudo su jenkins
とssh -vT [email protected]
、パスフレーズは常に聞かれますが、最終的には常に認証されます。 (詳細オプションは、使用されているキーなどを示します)。したがって:
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 )で述べたように)
数ヶ月間、誰もコメントから回答を書いていないので、私はすぐにそうします。
2つの問題/解決策があります。
id_rsaが間違ったユーザーで作成されました
Jenkinsユーザーとしてid_rsaを作成します( hudsonはgitリポジトリから取得できません )
パスフレーズを空のままにする
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/*
覚えておいてください:
ssh -vvv [email protected]
(gitサーバーに応じてアドレスを変更します)キーを作成するときにパスフレーズを空のままにしておくことで、この問題を回避しました。
キーを手動で作成した場合、それらはまだ所有されている可能性があり、jenkinsが読み取れない場合があることを追加します。
Sudo chown jenkins -R /var/lib/jenkins/.ssh/*
確認するには、次のとおりです。
すべてのチェックの後-> try ssh -vvv [email protected] sshが動作するまでjenkinsで設定を試行しないでください!
Windowsでjenkinsをサービスとして実行している場合は、サービスを実行しているユーザーを確認する必要があります。ユーザー「MACHINENAME\user」を使用してキーを作成した場合、それを実行するユーザーが一致できるようにサービスを変更します
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.エラーはすぐに削除されます。
キーはjenkinsユーザーから生成する必要があります。
Sudo su jenkins
ssh-keygen
キーが生成されたら、bitbucketまたはgithubでsshキーとして追加する必要があります。