web-dev-qa-db-ja.com

Jenkins-スレーブノードからクローンをgitできません。 SSHキー

最初のJenkinsスレーブをセットアップしました。ビルドを実行しましたが、SSHキーで問題が発生しました。マスターJenkinsサーバーはユーザー「jenkins」で実行されています。パスワードなしでマスターからスレーブにSSHで接続できるようにSSHキーを設定しました。

例えばマスターから:

jenkins@master:~$ ssh slave
Last login: Tue Apr 17 10:30:22 2012 from masterjenkins.com
$ whoami
jenkins

つまり、スレーブノードも「jenkins」ユーザーの下で実行されていることがわかります。 (公開sshキーをjenkins @ slaveからリモートgitサーバーにコピーしました)。スレーブから手動でgitクローンを発行することはできますが、マスターからビルドを開始すると、次のようなメッセージが表示されます。

    ERROR: Error cloning remote repo 'Origin' : Could not clone git@Host:abc
hudson.plugins.git.GitException: Could not clone git@Host:abc
Caused by: hudson.plugins.git.GitException: Error performing command: git clone --progress -o Origin git@Host:abc /var/lib/jenkins/workspace/abc_build
Command "git clone --progress -o Origin git@Host:abc /var/lib/jenkins/workspace/abc_build" returned status code 128: Initialized empty Git repository in /var/lib/jenkins/workspace/abc_build/.git/
Host key verification failed.
fatal: The remote end hung up unexpectedly
Caused by: hudson.plugins.git.GitException: Command "git clone --progress -o Origin git@Host:abc /var/lib/jenkins/workspace/abc_build" returned status code 128: Initialized empty Git repository in /var/lib/jenkins/workspace/abc_build/.git/
Host key verification failed.
fatal: The remote end hung up unexpectedly
Trying next repository
ERROR: Could not clone repository
FATAL: Could not clone

したがって、SSHキーが正しく設定されていないことを示唆しています。どこにコピーする必要があるキーを誰かに教えてもらえますか?

どうもありがとう、ns

11
nonshatter

クローンURLに基​​づくと、2つの異なる認証方法を混同しているようです。 gitではなくユーザーjenkinsとしてホストにSSHで接続しようとしています。通常、独自のGITリポジトリをホストし、git @ servername:reponameでクローンを作成する場合は、gitoliteなどを使用します。

ギトライトのようなものをセットアップしましたか?

代わりに、jenkinsユーザーとしてこのようにsshを実行してみてください。

ssh git@slave 

次に、それが何を返すかを確認します。これは、実行しているgit@Host:abcに沿ったSSHです。

サーバーマシンで他に何もセットアップしなかった場合は、クローンのURLをjenkins@Host:pathtorepoに変更します。

更新

/home/git/.ssh/authorized_keys

次のようなエントリが必要です:(これはすべて1行にあります)

# gitolite start
command="/home/git/bin/gl-auth-command jenkins",no
-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAt3+od84Gc9NBVrVb3MKjekHcBDwXXONnVYMNVpuRadoz/FPJTkOIxozKVPJDPI670O252giYpF59sOKqAJL0xEVUrhq8cDFuFwQsSAp0ed1kp/GRxx+pwytL58rcVJEHAy2DkD1z5HlNaZyvIxQyfLTnYfuL1Hx6Qe7dal7mXO0= keycomment
# gitolite end

Gitoliteのjenkinsにリポジトリ権限を追加します:(リポジトリをホストしているのと同じマシンで、gitoliteユーザーとしてクローンを作成する必要がある場合があります)

git clone git@Host:gitolite-admin 
cd gitolite-admin
cd conf
vi gitolite.conf

'abc'のエントリを見つけるか、存在しない場合は追加します

repo    abc
  RW+            = jenkins

変更をコミットしてプッシュします

git commit -a -m "Adding user jenkins to repo abc"
git Push

次に、ssh git@Hostをもう一度実行して、gitoliteが新しい権限について通知するかどうかを確認します。

5