Jenkins가 Github에서 호스팅되는 개인 저장소에서 데이터를 자동으로 가져오고 싶습니다. 그러나 나는 그 작업을 수행하는 방법을 모른다.. 젠킨스 사용자를 위해 ssh 키를 생성하는 문서를 시험해 보았습니다. “리포를 복제 할 수 없습니다”. URL을 확인했습니다. URL이 유효합니다.
어떤 단서라도, 이런 종류의 물건을 설명하는 문서 / 블로그 / 무엇을 알고 있습니까?
답변
아마도 배포 키에 대한 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 : // 를 앞에 두어 서는 안됩니다 .)
답변
나를 위해이 일을 한 가지는 그것이 있는지 확인하는 github.com
것입니다~jenkins/.ssh/known_hosts
.
답변
Jenkins가 1 개 이상의 프로젝트에 액세스해야하는 경우 다음을 수행해야합니다.
1. 하나의 github 사용자 계정에 공개 키
추가 2.이 사용자를 소유자 (모든 프로젝트에 액세스) 또는 모든 프로젝트의 공동 작업자로 추가하십시오.
GitHub가 처음으로 일치하는 배포 키를 발견하고 “오류 : 사용자 / repo2에 대한 권한이 사용자 / repo1에 거부 됨” 과 같은 오류를 다시 보내므로 한 시스템 사용자의 많은 공개 키가 작동하지 않습니다 .
http://help.github.com/ssh-issues/
답변
Jenkins는 시스템에서 사용자 Jenkins를 만듭니다. Jenkins 사용자에 대해 ssh 키를 생성해야합니다. 단계는 다음과 같습니다.
sudo su jenkins -s /bin/bash
cd ~
mkdir .ssh // may already exist
cd .ssh
ssh-keygen
이제 SSH 키를 사용하여 Jenkins 자격 증명을 만들 수 있습니다. Jenkins 대시 보드에서 자격 증명 추가
이 옵션을 선택하십시오
개인 키 : Jenkins 마스터 ~ / .ssh
답변
gitlab과 비슷한 문제가있었습니다. ssh를 통해 로그인 할 수있는 사용자를 제한했습니다. 이것은 github 사용자에게는 영향을 미치지 않지만 사람들이 gitlab (및 이와 유사한) 문제로 인해 여기에 오는 경우 git
다음 AllowUsers
설정 을 추가하십시오 /etc/ssh/sshd_config
.
# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
AllowUsers batman git
답변
또 다른 옵션은 GitHub 개인 액세스 토큰 을 사용하는 것입니다 .
- 이동 https://github.com/settings/tokens/new로 하십시오
- 저장소 추가 범위
- Jenkins에서 GitHub 추가 소스를
- 리포지토리 HTTPS URL 사용
- git repo 의 HTTPS URL을 추가하십시오 ( 예 : SSH가 아닌) .
https://github.com/my-username/my-project.git
) - 자격 증명 추가
- 종류 : 비밀번호가있는 사용자 이름
- 사용자 이름 : GitHub 사용자 이름
- 비밀번호 : GitHub에서 생성 한 개인용 액세스 토큰
- ID : 같은
github-token-for-my-username
Jenkins ver에서 이것을 테스트했습니다. 2.222.1 및 Jenkins GitHub 플러그인 1.29.5 (개인 GitHub 리포지토리 포함).
답변
sergey_mo의 대답에 대한 대안은 jenkins 서버에서 여러 ssh 키를 작성하는 것입니다.
(sergey_mo의 답변에 대한 첫 번째 논평자가 말했듯이 단일 키 페어를 관리하는 것보다 더 고통 스럽습니다.)