회사 공용서버에 내 github 아이디를 사용하지 않고 git을 사용할 수는 없을까?
https://blog.leocat.kr/notes/2017/11/27/github-deploy-key
서버에서 github를 사용할 땐 참 난감하다.
내 아이디로 로그인하자니, 내 개인 레포지토리까지 접속할 수 있어 꺼리직하다.
그래서 레포지토리 별로 접근 권한을 설정할 수 있는 Fine grained token 또는 Deploy key 방식을 이용하는 것이 바람직하다.
이번에는 Deploy key를 이용한 github 사용법을 알아보자
아래 명령어를 통해 새로운 rsa 키를 만들 수 있다.
ssh-keygen -t rsa -f my_key
-t는 타입을 지정하는 옵션이며, -f는 key를 저장할 파일 이름이다.
위 명령어를 실행하면 ~/.ssh 폴더에 my_key
와 my_key.pub
파일이 생성된다.
my_key
는 private key로써, 어떠한 경우에도 컴퓨터 밖으로 노출되면 안된다.
.ssh 폴더 내부에서 사용되기 때문에 굳이 복사하거나 cat
명령어로 열어볼 필요도 없다.
my_key.pub
는 public key로써, 인터넷에 올려도 된다. 이것을 깃허브에 등록하면 내 컴퓨터에 저장된 private key를 이용해 레포지토리에 접근할 수 있다.
public key의 예시는 다음과 같고, private key에 비해 상대적으로 짧다.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCu+j7Gcd3zAVy+jY7yDqAu+MihMd9xoZdDpTtZJMDT9tc39aCt5WCeFZUbt6QGe2hHOcOXAxLiA+RQjUHrT4AnIxEA2OpyJImPbEXysgRdWavUMYyn2UtU96S2xLxWBHstj+vb6J8XXRQ7tYzTecbAf5H44wELsaOypeH+z8Lu4a4+bU1KcFnoL/jDXuwZTdB6jPDpj61TrySJ6WZNHfpMu5g8z2jJw6qZ8+vw/ib0wJfXnf/6bRHL19gWW43auOwSXOYTArB2Oz2n56lScyVrchT/+Yrs6EjioS/qIKxFxLkg5cZ4+6RQ1MksZ48eSdagrt9UZ4TBDmJDS3/Anuf4CvJV7/loYBabTUg6fBYjwk+ajo1AUgcqsEKmwfMTc5Z7nXeTPOIJwFlArexiq3v+slWG/6dr0kN0ZilpHV5sgorFayPRg627qolHCdBeOje/LGJJNSfkrFRyEpU4bn3xwbFgn3Qyk6NGaGS4X4/CaLhhTBv1NcpcuWXE= hyun-wle@velog.MacBookPro.local
원하는 레포지토리로 이동 -> settings -> Deploy Keys 로 들어가면 key를 등록할 수 있다.
settings가 안보이는 경우는, 레포지토리 권한이 없어서 보이지 않는 것이다.
settings는 보이지만, Deploy Keys가 보이지 않는 경우, 레포지토리 권한이 낮아서 발생한다.
Deploy key를 등록하기 위해선 해당 레포지토리의 Owner여야한다.
add deploy key를 눌러 새 key를 추가하자.
title은 마음대로 정해도 좋고, key에는 .pub파일의 내용을 복붙하면 된다.
깃허브에 deploy key를 등록했다면, ssh에도 private key가 어디 있는지 명시해줘야한다.
~/.ssh/config
파일에 다음 내용을 추가한다. config
파일이 없다면 새로 만들면 된다.
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/my_key
IdentitiesOnly yes
Port 22
마지막으로 deploy key를 등록했던 레포지토리를 클론하면된다.
이 때 HTTP 주소를 이용한 clone이 아닌, SSH 주소를 이용한 clone을 해야한다.
깃허브 주소를 복사할 때, HTTP 대신 SSH를 선택하면 된다.
HTTP 형식
https://github.com/my_company/company_repo
SSH 형식
git@github.com:my_company/company_repo
이를 통해 로그인 없이 git에 접근하는 방법을 알아보았다.