これが私のセットアップです:
- Jenkins は私の Linux マシンで「jenkins」ユーザーとして実行されています。
- Linux - Setup Gitで説明されているように、「jenkins」ユーザー用にssh キーペアを生成しました。
- 私
sudo su jenkins
と試してみるとssh -vT git@github.com
、常にパスフレーズを尋ねられますが、最終的には常に認証されます。(冗長オプションは、使用されているキーなどを示します)。 - 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 は、自分のユーザーを使用しているときにパスフレーズを覚えるのに役立ちますが、ジェンキンID は覚えていないことを示しています。私の通常のユーザーとして実行している間は、次のようになることに注意してください。
echo "$SSH_AUTH_SOCK"
/tmp/keyring-nQlwf9/ssh
私の「ジェンキンス」と同じコマンドを実行している間、何も得られません(許可が拒否されても)
問題についての私の理解は、パスフレーズが記憶されていないということです。何か考えはありますか?jenkins ユーザー用に ssh-agent またはキー リング マネージャーを開始しますか? どのように?または、同じマシンに転送する場合、ssh 転送は適していますか? もっと明るいアイデアはありますか?
ps: 私は決してsudo gitted
、私は常にジェンキンスまたは自分のユーザー アカウントを使用していました (この SO 投稿で言及されているように - Ubuntu/GitHub SSH キーの問題)