programing

Github 개인 저장소에 대한 Jenkins CI 인증

iphone6s 2023. 10. 14. 09:54
반응형

Github 개인 저장소에 대한 Jenkins CI 인증

Jenkins가 Github에 호스팅된 개인 저장소에서 자동으로 데이터를 가져오길 원합니다.하지만 저는 그 일을 어떻게 해낼지 전혀 모르겠습니다.jenkins 사용자를 위한 ssh-key를 생성하는 문서를 시도했지만 "repo를 복제할 수 없습니다."라는 것만 볼 수 있습니다.URL을 확인했습니다. 유효합니다.

어떤 단서라도 있나요? 아마도 어떤 문서들/블로그들/어떤 것들이 이런 종류의 것들을 설명하고 있는지 알고 계실까요?

배치 키에 대한 GitHub의 지원이 당신이 찾고 있는 것은 아닐까요?해당 페이지 인용하기

배포 키는 언제 사용해야 합니까?

단일 개인 레포에 대한 풀 액세스가 필요한 서버가 있는 경우 간단합니다.이 키는 개인 사용자 계정 대신 저장소에 직접 연결됩니다.

만약 그것이 이미 당신이 시도하고 있는 것이고 그것이 작동하지 않는다면, 당신은 사용 중인 URL, 키 파일의 이름과 위치 등에 대한 더 자세한 정보로 질문을 업데이트하기를 원할 수 있습니다.


이제 기술적인 부분은 다음과 같습니다.젠킨스와 SSH 키를 어떻게 사용합니까?

예를 들어, 당신이 A.jenkinsunix 사용자, 배포 키를 저장할 수 있습니다.~/.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 저장소에 인증하는 것은git@github.com위의 키를 Github에 연결하는 데 사용하지 않으려면 github-deploy-my 프로젝트라는 호스트 별칭을 만들었습니다.이제 복제 URL은 다음과 같습니다.

git clone github-deploy-myproject:myuser/myproject

Jenkins에 저장소 URL로 입력하는 것도 이와 같습니다.

(이것이 작동하기 위해서는 ssh://를 앞에 붙여서는 안됩니다.)

이 일이 저에게 도움이 된 한 가지는github.com~jenkins/.ssh/known_hosts.

Jenkins가 두 개 이상의 프로젝트에 액세스해야 하는 경우 다음 작업을 수행해야 합니다.
1. 하나의 github 사용자 계정에 공개 키 추가
2. 이 사용자를 Owner(모든 프로젝트에 액세스하려면) 또는 모든 프로젝트의 공동작업자로 추가합니다.

GitHub에서 일치하는 첫 번째 배포 키를 찾고 "ERROR: 사용자/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 키 On Jenkins 대시보드 Add Credentials를 사용하여 Jenkins 자격 증명을 생성할 수 있습니다.

이 옵션 선택

개인 키: Jenkins 마스터에서 ~/.ssh

gitlab 에도 비슷한 .제가 ssh를 통해 로그인할 수 있는 사용자를 제한했던 것으로 드러났습니다. 될 은 gitlab만을 하고 gitlab다를이하십시오.gitAllowUsers:n/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 사용
  • 깃레포의 HTTPS URL을 추가합니다(: SSH URL이 아님).https://github.com/my-username/my-project.git)
  • 자격 증명 추가
    • 종류: 비밀번호가 있는 사용자 이름
    • 사용자 이름: GitHub 사용자 이름
    • 암호: GitHub에서 만든 개인 액세스 토큰
    • : .github-token-for-my-username

Jenkins ver. 2.222.1과 Jenkins GitHub 플러그인 1.29.5에서 개인 GitHub repo로 테스트했습니다.

sergey_mo의 답변에 대한 대안은 jenkins 서버에 여러 개의 ssh 키를 만드는 것입니다.

(비록 sergey_mo의 답변에 대한 첫 번째 코멘트가 말했지만, 이것은 키 쌍 하나를 관리하는 것보다 더 고통스러울 수 있습니다.)

언급URL : https://stackoverflow.com/questions/5212304/authenticate-jenkins-ci-for-github-private-repository

반응형