Search

로그인 없이 여러 github 배포 ssh-keygen, multiple

카테고리
Environments
태그
Github
etc
게시일
2023/10/16
수정일
2024/11/18 15:43
시리즈
1 more property

1. Github deploy key

회사의 git 서비스를 사용할 때 github를 사용할 경우, 계정정보를 이용하여 Pull 혹은 Push가 어려운 구조로 바뀌었습니다. Git Token을 이용하여 Password 대신 사용할 수 있지만 이런 방법으로도 여전히 불편합니다. 특히 자동으로 배포 프로세스를 만들기 위해서는 다른 방법을 찾아봐야 할 것입니다. Github에서는 Deploy Key가 제공됩니다. 이를 이용하기 위해 ssh-keygen을 이용하여 배포하는 과정을 살펴보도록 하겠습니다.

2. ssh-keygen

# 2048 bit, rsa SSH Key generation ssh-keygen -t rsa -b 2048 -f keyname
Bash
복사
-t 타입 지정 옵션 (rsa, dsa, ecdsa, …)
-b 키 길이(bit 수) 1024, 2048, 4096, …
-f 키 파일의 이름(keyname, keyname.pub)
위 명령어를 실행하게되면 다음과 같이 Private Key와 Public Key가 생성됩니다.
위 그림을 예로 들면, 다음과 같이 구분할 수 있습니다.
deploy_key : 개인키(Private Key)로써 어떠한 경우에도 노출해서는 안 됩니다.
deploy_key.pub : 공개키(Public Key)로써 노출되어도 무방합니다. 이를 깃허브에 등록하게 되면, private_key를 이용하여 github repository에 접근할 수 있습니다.

Public key example

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC+00SKsUakSICZNHXANW3U7FGQ3XueB7LisctuiUhrs6ImM1pD0ODOgbZKYBvJQjrdL29Nmv4qJ9ou2UXS5dR0mtBr7b6OfaQM2xuZsVBP0cd0Efxfq8sTYj3ZFgtm6hpq1lpbKgB5eKJ74oOzRVpDEOk74KwVYFeh/U7u2gDDNltZ+z5P/tB61XJ9ubjeNV/oGPf+gbHrJPJOHSjM5HLbY7eNyNIypV+YE0TWq3Qle1T1Xti6CefbOva64JiAlHBhAsQteIiDTCc98VPZAo1X4a5D8UIe9Ij/omkdskJ8bnxPInyaIFSYneM0N2F4hvZyX/hXRKPZKXJM/rugzTSlKAPtMhTy9tyLmmA9CjVJnLI5yTKhUHcTk9qY++8/iCCSSRB8xFcp7sUXMocFMV4i26oWDwYUVYDBvNn7JWPtchW6Tkf0n6kn1rFQAoBiTbUyb4RiUfMs2iJJJ1nZknIcnd79HxK3CHBpDJBsgEq3w7wkrID6Z4y/9/NHdsBuifM= kkamikoon@goldstar
Plain Text
복사

Private key example

-----BEGIN OPENSSH PRIVATE KEY----- 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 -----END OPENSSH PRIVATE KEY-----
Plain Text
복사

3. Github deploy key set-up

key generating

위의 ssh-keygen 명령어를 이용하여 priv-key와 pub-key를 생성합니다.
ssh-keygen -t rsa -b 2048 -f ~/.ssh/retro-ctf-backend
Plain Text
복사

Add deploy key

repository 주소 접속SettingsDeploy Keys 여기로 들어가서 Key를 등록할 수 있습니다. 생성된 ssh 키 중 public key를 github에 등록합니다.

ssh config

Github에 Deploy key(public key)를 등록했으면, SSH 실행 시 private key가 어디에 있는지 명시해주어야 합니다.
~/.ssh/config 파일에 다음 내용을 추가합니다. 없다면 새로 생성해주어도 됩니다.
Host github.com HostName github.com User git IdentityFile ~/.ssh/retro-ctf-backend IdentitiesOnly yes Port 22
Bash
복사

git clone

이제 세팅을 완료했다면 SSH 형태로 git clone을 실행할 수 있습니다.
SSH 형식
git@github.com:user_name/repository_name
Example

4. 여러 개 Deploy Key 설정

만약 여러 개의 Deploy Key를 하나의 서버(혹은 로컬)에서 관리해야 한다면 다음과 같이 설정해줄 수 있습니다.
Host retro_ctf HostName github.com User git IdentityFile ~/.ssh/retro-ctf IdentitiesOnly yes Port 22 Host retro_ctf_backend HostName github.com User git IdentityFile ~/.ssh/retro-ctf-backend IdentitiesOnly yes Port 22
Bash
복사

Test

ssh -T git@retro_ctf_backend
Bash
복사

Clone

clone 명령어를 수행할 때는 다음과 같이 사용할 수 있습니다.
`Host`:`username`/`repository_name`.git
예시 : git clone -b BRANCH retro_ctf:0x0w1/retro-ctf

Remote

remote url 세팅할 때 다음과 같이 사용할 수 있습니다.
git remote set-url origin git@`Host`:`username`/`repository_name`.git
예시 : git remote set-url origin git@retro_ctf_backend:0x0w1/retro-ctf-backend.git
만약 origin을 추가하고자 한다면 다음과 같이 설정할 수 있습니다.
git remote add origin git@`Host`:`username`/`repositoy_name`.git
예시 : git remote add origin git@retro_ctf_backend:0x0w1/retro-ctf-backend.git

Push

SSH 키 세팅이 완료돼 있다면, 일반적인 명령어로 push가 가능합니다.
git push origin `Branch Name`
예시 : git push origin development