운영체제/Linux | Mac(OSX)

git 계정 여러개 (.gitconfig 설정)

며용 2020. 7. 25. 03:55

환경: Windows 10, git bash

개인 github만 썼어서 아무 생각없이 git을 썼는데 회사 다니니까 키가 따로 필요해졌다

 

1. SSH Key 생성

#ssh rsa key 생성
#default 2048, -b 4096

$ssh-keygen -t rsa -C "GITHUB_MAIL"

키를 생성할 때 이름을 정해준다 
비밀번호는 만들지 않고 생성했다

생성이 완료되면 ~/.ssh 밑에
- my_github : private key
- my_github.pub : public key
공개키와 비밀키 페어로 키가 생성이 된다

(~ : $HOME이고 echo $HOME하면 어딘지 알 수 있다, 바꾸고 싶으면 Path 수정)

 

 

 

2. Github에 SSH 등록

Github에서 Setting에 SSH keys에 들어가서 방금 생성한 ssh key를 등록해준다.

cat ~/.ssh/KEY_NAME.pub

cat으로 출력해서 나오는 걸 그대로 복붙해도 되고 파일에 들어가서 있는 내용 전체를 복붙해도 된다.

private key는 비밀키로 나만 알고있어야하는 키고 등록하는 키는 꼭 KEY_NAME.pub로 되어있는 public key여야 한다

 

#또는 command로 실행
pbcopy < ~/.ssh/rsa_my_github.pub

 

 

 

3. ssh config 설정

$vim .ssh/config

.ssh 밑에 있는 config를 열어준다 (없으면 생성됨)

ssh config 파일을 작성해준다. (alias 해주는 애)

Host ALIAS_NAME
    HostName github.com
    User git
    IdentityFile ~/.ssh/KEY_NAME

아까 만든 키 중에 private key 이름을 identity file에 지정해주고 이거로 접속할 Host 이름을 정해준다.

 

ssh -T HOST_NAME

연결이 잘 되는지 체크해볼 수 있는 명령어다.
아까 설정한 alias 이름으로 ssh 접속 시도해보고 successfully라고 뜨면 정상적으로 설정된 것

 

 

 

4. .gitconfig 설정

이제 이 등록한 git 정보로 push를 하기 위해 새로운 gitconfig 작성을 해준다

vim ~/.gitconfig-my

git bash의 ~에 .으로 시작하는 새로운 gitconfig 파일을 생성해준다
여기에 아까 등록한 git의 user 정보를 적어주고 저장해준다

 

 

그리고 이 정보를 default .gitconfig에 설정을 해줘야한다

Git을 어디에 다운받았어도 .gitconfig 파일은 $HOME path밑에 설정된다

echo $HOME

git bash의 ~는 보통 $HOME이랑 같다
그래서 ls -al로 확인해보면 .gitconfig이 존재한다 (없으면 생성)

 

.gitconfig는 현 사용자가 쓰는 global한 설정 파일이다
(여기 적혀있는 정보가 default로 push할 떄 계정 정보)

vim ~/.gitconfig
또는
git config --global --edit

includeIf를 이용해서 만약 이 폴더 밑에 있는 저장소면 이 정보를 사용하겠다 라고 설정할 수 있다
Github 폴더 밑에 있는 애들이면 방금 연결한 git 계정으로 연결되도록 설정할 거다.
(includeIf는 가장 하단에 있는 것이 좋다고 한다)

 

#git bash ^^
[includeIf "gitdir:D:/workspace/Github/"]
        path=.gitconfig-my

진짜 git bash 다른 하드디스크로 옮기려면 /d/ 이런 식으로 써서 이렇게 경로 설정했더니 안 먹고..^^...개고생...
경로 명은 윈도우 식으로 하되 \\가 아닌 /로 써야한다

그리고 아까 생성해준 .gitconfig-my 파일로 path를 정해준다

 

 

 

5. 확인

git config --show-origin --get user.name

기본 git은 .gitconifg에 적혀있는 정보로 뜨고 Github 폴더 밑에 있는 레파지토리 들에서는 설정한 git 계정으로 된다

그래서 일일이 바꾸지 않아도 알아서 push 돼ㅠㅠ!

 

 

+ ‘Permission denied (publickey)’ 에러

user는 항상 git 입니다*

 

이것도 하긴 했었는데 딱히 상관은 없는 듯
(SSH 키 생성할 때 비밀번호를 입력하지 않았으면 필요없는 사항)

ssh-agent는 개인키의 비밀번호를 암호화 해서 기억해두고 처음 한 번만 개인키 비밀번호를 입력하면 다음부터는 기억한 비밀번호를 이용하므로 사용자는 또 비밀번호를 입력하지 않아도 된다.

소켓(Socket)을 생성해서 원격 서버와 통신하기 때문에 비밀번호가 유출될 염려도 없다.

#ssh 데몬 실행
eval "$(ssh-agent -s)"
#키 추가
ssh-add -K ~/.ssh/rsa_my_github
#등록된 키 확인
ssh-add -l

 

+

git remote set-url origin git@my-github.com:USER/NAME.git

기존에 있던 레파지토리 아까 설정한 my-github.com으로 git 계정 변경하기

SSH로 셋팅한 거라 HTTPS 형식으론 안됨!ㅁ!

 

git remote -v

현재 연결되어있는 저장소 경로를 볼 수 있다

 

git init

git에 등록 안되어있던 폴더에 git 로컬 저장소로 지정하기

 

 

Reference:

https://docs.github.com/en/github/authenticating-to-github/error-permission-denied-publickey

https://devlog.jwgo.kr/2019/04/17/ssh-keygen-and-ssh-agent/