Jenkins が、Github でホストされているプライベート リポジトリからデータを自動的に取得できるようにしたいと考えています。しかし、そのタスクを達成する方法がわかりません.. ドキュメントを試してみて、jenkins ユーザーの ssh-key を生成しましたが、「リポジトリを複製できません」と表示されます。URL を確認しました - それらは有効です。
この種のことを説明しているドキュメント/ブログ/何かを知っているかもしれません。
Jenkins が、Github でホストされているプライベート リポジトリからデータを自動的に取得できるようにしたいと考えています。しかし、そのタスクを達成する方法がわかりません.. ドキュメントを試してみて、jenkins ユーザーの ssh-key を生成しましたが、「リポジトリを複製できません」と表示されます。URL を確認しました - それらは有効です。
この種のことを説明しているドキュメント/ブログ/何かを知っているかもしれません。
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.)
これが私のために機能するようになった1つのことは、それがにあることを確認することgithub.com
です~jenkins/.ssh/known_hosts
。
Jenkins が 1 つ以上のプロジェクトにアクセスする必要がある場合は、次のことを行う必要があり
ます
。
GitHub は最初に一致したデプロイ キーを見つけ、 「エラー: user/repo2 へのアクセス許可が user/repo1 に拒否されました」のようなエラーを返すため、1 人のシステム ユーザーの多くの公開キーは機能しません。
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
gitlabでも同様の問題がありました。ssh経由でログインできるユーザーを制限していたことがわかりました。これは github ユーザーには影響しませんが、人々が gitlab (など) の問題でここにたどり着いた場合に備えて、 の設定に必ず追加git
してください:AllowUsers
/etc/ssh/sshd_config
# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
AllowUsers batman git
sergey_mo からの回答に代わる方法は、jenkins サーバーに複数の ssh キーを作成することです。
(sergey_mo の回答に対する最初のコメント投稿者が言ったように、これは単一のキー ペアを管理するよりも苦痛になる可能性があります。)