139

Jenkins が、Github でホストされているプラ​​イベート リポジトリからデータを自動的に取得できるようにしたいと考えています。しかし、そのタスクを達成する方法がわかりません.. ドキュメントを試してみて、jenkins ユーザーの ssh-key を生成しましたが、「リポジトリを複製できません」と表示されます。URL を確認しました - それらは有効です。

この種のことを説明しているドキュメント/ブログ/何かを知っているかもしれません。

4

7 に答える 7

139

Perhaps GitHub's support for deploy keys is what you're looking for? To quote that page:

When should I use a deploy key?

Simple, when you have a server that needs pull access to a single private repo. This key is attached directly to the repository instead of to a personal user account.

If that's what you're already trying and it doesn't work, you might want to update your question with more details of the URLs being used, the names and location of the key files, etc.


Now for the technical part: How to use your SSH key with Jenkins?

If you have, say, a jenkins unix user, you can store your deploy key in ~/.ssh/id_rsa. When Jenkins tries to clone the repo via ssh, it will try to use that key.

In some setups, you cannot run Jenkins as an own user account, and possibly also cannot use the default ssh key location ~/.ssh/id_rsa. In such cases, you can create a key in a different location, e.g. ~/.ssh/deploy_key, and configure ssh to use that with an entry in ~/.ssh/config:

Host github-deploy-myproject
    HostName       github.com
    User           git
    IdentityFile   ~/.ssh/deploy_key
    IdentitiesOnly yes

Because all you authenticate to all Github repositories using git@github.com and you don't want the above key to be used for all your connections to Github, we created a host alias github-deploy-myproject. Your clone URL now becomes

git clone github-deploy-myproject:myuser/myproject

and that is also what you put as repository URL into Jenkins.

(Note that you must not put ssh:// in front in order for this to work.)

于 2011-03-06T18:07:12.990 に答える
37

これが私のために機能するようになった1つのことは、それがにあることを確認することgithub.comです~jenkins/.ssh/known_hosts

于 2011-08-05T05:36:15.870 に答える
13

Jenkins が 1 つ以上のプロジェクトにアクセスする必要がある場合は、次のことを行う必要があり
ます

GitHub は最初に一致したデプロイ キーを見つけ、 「エラー: user/repo2 へのアクセス許可が user/repo1 に拒否されました」のようなエラーを返すため、1 人のシステム ユーザーの多くの公開キーは機能しません。

http://help.github.com/ssh-issues/

于 2012-01-31T14:52:31.610 に答える
7

Jenkins は、システム上にユーザー Jenkins を作成します。Jenkins ユーザー用に ssh キーを生成する必要があります。手順は次のとおりです。

sudo su jenkins -s /bin/bash
cd ~
mkdir .ssh // may already exist
cd .ssh
ssh-keygen

Jenkins ダッシュボードで SSH キーを使用して Jenkins 資格情報を作成できるようになりました。資格情報の追加

このオプションを選択

秘密鍵: Jenkins マスターから ~/.ssh

于 2016-04-09T03:21:09.220 に答える
1

gitlabでも同様の問題がありました。ssh経由でログインできるユーザーを制限していたことがわかりました。これは github ユーザーには影響しませんが、人々が gitlab (など) の問題でここにたどり着いた場合に備えて、 の設定に必ず追加gitしてください:AllowUsers/etc/ssh/sshd_config

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
AllowUsers batman git
于 2013-05-23T20:47:08.880 に答える
-1

sergey_mo からの回答に代わる方法は、jenkins サーバーに複数の ssh キーを作成することです。

(sergey_mo の回答に対する最初のコメント投稿者が言ったように、これは単一のキー ペアを管理するよりも苦痛になる可能性があります。)

于 2012-03-04T23:37:13.560 に答える