ssh key 여러개 사용하기
그런데 host를 곁들인
하고 싶었던 것
github과 gitlab의 ssh key를 서로 다르게 가져가고 싶었습니다.
하지만 깃에서 사용하는 ssh key는 OS 레벨에서 관리되기 때문에? 간단하지 않았습니다.
% git config --list
credential.helper=osxkeychain
어.. 이렇게 쓰고 보니까 credential.helper
를 잘 다룰 줄 알았더라면 좀 더 빨리 끝냈을 것 같네요 (u_u );;
~/.ssh/config 를 사용해봅니다
먼저 ssh key를 적당히 하나 만들고, ~/.ssh/config
를 수정해봅니다
% cat ~/.ssh/config
Host git-codecommit.*.amazonaws.com
User ****
IdentityFile ~/.ssh/id_rsa
# **** Account Identity
Host gitlab.com
Hostname gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_**** # 적당히 하나 만든 ssh key
이렇게 하면 gitlab.com
에 대한 ssh 관련 접근에 적당히 하나 만든 키를 사용하게 됩니다.
즉 ssh로 연결해야 합니다.
% git config remote.origin.url 'https://gitlab.com/****/****.git'
% git fetch
remote: The project you were looking for could not be found or you don't have permission to view it.
이러면 안 되고,
% git config remote.origin.url 'git@gitlab.com:****/****.git'
% git fetch
fatal: bad object refs/heads/main 2
error: ****.gitlab.com:****/****.git이(가) 모든 필요한 오브젝트를 보내지 않았습니다 # did not send all necessary objects
어.. 왜 안 될까요;;
찾아보니 이건 다른 문제였습니다.
error: invalid sha1 pointer | error: bad ref for
% git fsck --full
오브젝트 디렉터리를 확인하는 중입니다: 100% (256/256), 완료.
오브젝트를 확인합니다: 100% (39445/39445), 완료.
error: refs/heads/main 2: invalid sha1 pointer 0000000000000000000000000000000000000000
error: bad ref for .git/logs/refs/heads/main 2
에러나는 파일인 .git/refs/heads/main 2
, .git/logs/refs/heads/main 2
를 삭제하여 해결했습니다.
- 참고
This means my pack file is no corrupted but some refs are invalid: Stack Overflow
“did not send all necessary objects” is the manifestation of the error, not the error itself: Stack Overflow
마치며
아 역시 git config
의 credential을 사용하는게 더 자연스러울 것 같아요!