환경: 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
'운영체제 > Linux | Mac(OSX)' 카테고리의 다른 글
[OverTheWire] 리눅스 커맨드 익히기 및 연습하기 위한 환경 만들기 (0) | 2021.05.01 |
---|---|
iTerm shortcut 단축키 (0) | 2020.10.22 |
zsh에서 vim theme 적용, syntax highlight가 안될 때 (0) | 2020.06.05 |
macbook setting (0) | 2020.05.23 |
rsa key 생성 (0) | 2020.05.23 |