Owl Life

Jenkins Publickey 에러로 repository 접근할 때 error 발생하는 이슈 해결. (ssh 키 생성 및 등록) 본문

Jenkins

Jenkins Publickey 에러로 repository 접근할 때 error 발생하는 이슈 해결. (ssh 키 생성 및 등록)

Owl Life 2019. 10. 24. 00:59
반응형

에러 내용

Failed to connect to repository.

Permission denied (publickey).

fatal: 리모트 저장소에서 읽을 수 없습니다.

 

 

정상적으로 저장소에 접근이 가능한 경우

 

원인

public repository라면 url만 입력해도 바로 연동이 되지만 private repository인 경우에는 ssh key를 등록하여야 정상적으로 git 반영이 가능합니다. ssh 키 생성 및 repository에 등록하는 과정을 알아보도록 하겠습니다.

 

인증키 만들기

인증키는 ssh-keygen으로 생성한다.

$ cd ~/.ssh
$ ls

만약 id_rsa / id_rsa.pub 와 같은 키 쌍이 존재한다면 키 생성없이 바로 등록 과정을 거쳐도 됩니다.

// 없는 경우에는 키 생성
:~/.ssh$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/allsoft/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/allsoft/.ssh/id_rsa.
Your public key has been saved in /home/allsoft/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:KxoQ6MNVJZh3pWqUsbObfl9d4zavt6ruK2+D5jIO4q0 allsoft@allsoft-ubuntu
The key's randomart image is:
+---[RSA 2048]----+
|    o+....       |
| . o..=..        |
|. ...=..         |
|o ... +          |
| +.  +  S      o |
|  ... o  .  . o .|
|   ..+. . .. . + |
|  . +o.= +.o  . +|
|   Eooo.*o**+.o+o|
+----[SHA256]-----+

// 키 생성시 비밀번호는 입력하지 않아도 됩니다.

 

인증키를 메모리에 상주 시키고 키 등록

 

~/.ssh$ eval $(ssh-agent -s)
Agent pid 9071
~/.ssh$ ssh-add ~/.ssh/id_rsa
Identity added: /home/allsoft/.ssh/id_rsa (/home/allsoft/.ssh/id_rsa)

ssh-agent 를 이용하여 인증키를 메모리에 상주시켜두면 한번만 인증키 암호를 입력하면 다음부터는 입력하지 않아도 같은 인증키를 사용하는 모든 서버들에 접속 할 수 있습니다.

 

 

private repository의 설정에 ssh 키 등록

방금 생성한 public key를 repository의 설정에 등록합니다. 등록하면 젠킨스에서 바로 접근이 가능합니다.

본 예제의 경우에는 gitlab에서 테스트를 하였기 때문에 gitlab의 settings에서 키를 등록해줍니다.

 

gitlab.com의 User settings(profile) 진입 후 SSH Keys 선택

 

입력할 public key는 아래처럼 command로 확인 가능. 복사 해서 붙여넣기 후 저장합니다.

allsoft@allsoft-ubuntu:~/.ssh$ cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC........ allsoft@allsoft-ubuntu

 

Jenkins Credentials 추가

jenkins 워크스페이스 설정에서 repository url 입력시 private key를 선택하도록 합니다.

- Kind에서 SSH Username with private key 를 선택

- ID 및 username는 입력하지 않음.

- Description은 키 이름 입력

- Private Key에서 직접 입력을 선택 하고 Add Key 버튼 선택 후 private key를 직접 입력합니다.

- Passphrase는 키 생성시 입력하지 않았으므로 빈칸으로 비워둡니다.

- Add 버튼 클릭

 

 

Credentials 선택

위에서 생성한 키를 선택후 잠시 기다리면 정상적으로 접근이 가능하다는 표시로 에러 문구가 사라집니다.

이제부터 정상적으로 저장소에 접근이 가능합니다.

반응형
Comments