1

Jenkins をデーモン (Mac OS x 10.7 上) としてインストールし、' real-os-user' を JENKINS USER として使用しています。

git プロジェクト ( ) でジョブを構成しようとしていますhelloworldが、次のエラーが発生します。

    Failed to connect to repository : Command "git ls-remote -h git-server-name:helloworld HEAD" returned status code 128:
    stdout: 
    stderr: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,keyboard-interactive). 
    fatal: The remote end hung up unexpectedly

git ls-remote -h git-server-name:helloworld HEADターミナル ウィンドウで「 」を実行すると、正常に動作します。

env」変数を出力したところ、Jenkins が「real-os-user」を使用していることがわかります。

どんなアイデアでも大歓迎です。ありがとう

4

1 に答える 1

0

git-server-name:helloworldは ssh アドレスであるため、次のことを確認する必要があります。

  • Jenkinsは(ジョブの実行時に)HOMEシェルセッションと同じように定義しました
  • $HOME/.sshconfigファイルが存在し、含まれている(秘密鍵id_rsaid_rsa.pub公開鍵): テストhelloworld目的で、Jenkins ジョブにそれらのファイルが存在するかどうかをテストします。
  • Siddharthは、コメントで、秘密鍵に ssh-agent に追加する必要があるパスフレーズが含まれている可能性があるという事実を参照しています。
    まず、gitolite に登録するパスフレーズのないキーで試してください。

ユーザー名の後に公開鍵と秘密鍵の名前を変更した場合 (gitolite は公開鍵がユーザー ID に基づいて命名されることを想定しているため)、構成ファイルはその新しい名前を参照する必要があることに注意してください。

 .ssh
    real-os-user
    real-os-user.pub
    config

構成ファイルを使用:

Host git-server-name
    HostName git-server-name
    IdentityFile ~/.ssh/real-os-user
    User git # or whatever account is managing gitolite on the server side

あなたのことを考えるとgit ls-remote、これは問題にならないはずです。

于 2012-12-28T08:39:59.723 に答える