답변:
아마도 배포 키에 대한 GitHub의 지원 이 원하는 것입니까? 해당 페이지를 인용하려면 :
배포 키는 언제 사용해야합니까?
단일 개인 저장소에 대한 풀 액세스가 필요한 서버가있는 경우 간단합니다. 이 키는 개인 사용자 계정 대신 리포지토리에 직접 연결됩니다.
그것이 이미 시도하고 있고 작동하지 않는 경우 사용중인 URL, 키 파일의 이름 및 위치 등에 대한 자세한 내용으로 질문을 업데이트 할 수 있습니다.
이제 기술 부분 : Jenkins에서 SSH 키를 사용하는 방법은 무엇입니까?
예를 들어, jenkins
유닉스 사용자 인 경우에 배포 키를 저장할 수 있습니다 ~/.ssh/id_rsa
. Jenkins가 ssh를 통해 저장소를 복제하려고 시도하면 해당 키를 사용하려고 시도합니다.
일부 설정에서는 Jenkins를 자체 사용자 계정으로 실행할 수 없으며 기본 ssh 키 위치를 사용할 수도 없습니다 ~/.ssh/id_rsa
. 이러한 경우, 예를 들어 다른 위치에 키를 생성하고 다음과 같은 항목으로 키 를 사용 ~/.ssh/deploy_key
하도록 구성 ssh
할 수 있습니다 ~/.ssh/config
.
Host github-deploy-myproject
HostName github.com
User git
IdentityFile ~/.ssh/deploy_key
IdentitiesOnly yes
를 사용하여 모든 Github 리포지토리를 인증하고 Github에 git@github.com
대한 모든 연결에 위의 키를 사용하지 않기 위해 호스트 별칭 github-deploy-myproject를 만들었습니다 . 복제 URL은 이제
git clone github-deploy-myproject:myuser/myproject
Jenkins에 리포지토리 URL 로 넣는 것도 마찬가지 입니다.
( 이 작업을 수행하기 위해 ssh : // 를 앞에 두어 서는 안됩니다 .)
ssh-keygen
사용자 Jenkins가 (Ubuntu 서버에서 "jenkins")로 실행되면서 실행됩니다. 그런 다음 ~jenkins/.ssh/id_rsa.pub
github의 리포지토리의 배포 키 섹션에 추가 했습니다.
~
디렉토리에 포함 시키지 않아야 합니다. 그러나 /var/lib/jenkins/.ssh/
기본 젠킨스 사용자가 해당 키를 사용하도록!
/var/lib/jenkins
인 홈 디렉토리 ( ~
에 대한) jenkins
사용자.
Could not match github-deploy-myproject:myuser/myproject
후크 로그에 오류가 비슷합니다 . 내 Repo URL과 빌드로 GitHub에 액세스 할 수 있도록 입력했습니다. 빌드를 트리거하지 못하는 것은 GitHub의 게시물입니다.
나를 위해이 일을 한 가지는 그것이 있는지 확인하는 github.com
것입니다~jenkins/.ssh/known_hosts
.
Jenkins가 1 개 이상의 프로젝트에 액세스해야하는 경우 다음을 수행해야합니다.
1. 하나의 github 사용자 계정에 공개 키
추가 2.이 사용자를 소유자 (모든 프로젝트에 액세스) 또는 모든 프로젝트의 공동 작업자로 추가하십시오.
GitHub가 처음으로 일치하는 배포 키를 발견하고 "오류 : 사용자 / repo2에 대한 권한이 사용자 / repo1에 거부 됨" 과 같은 오류를 다시 보내므로 한 시스템 사용자의 많은 공개 키가 작동하지 않습니다 .
또 다른 옵션은 GitHub 개인 액세스 토큰 을 사용하는 것입니다 .
https://github.com/my-username/my-project.git
)github-token-for-my-username
Jenkins ver에서 이것을 테스트했습니다. 2.222.1 및 Jenkins GitHub 플러그인 1.29.5 (개인 GitHub 리포지토리 포함).
sergey_mo의 대답에 대한 대안은 jenkins 서버에서 여러 ssh 키를 작성하는 것입니다.
(sergey_mo의 답변에 대한 첫 번째 논평자가 말했듯이 단일 키 페어를 관리하는 것보다 더 고통 스럽습니다.)