ssh-key로 회사계정, 개인계정 따로 설정하기

Tags
config
ssh-key
부가 설명
 
 

[1] ssh-key 생성

ssh-key 파일 저장 경로

~/.ssh/

ssh-keygen 사용법

usage: ssh-keygen [-q] [-b bits] [-C comment] [-f output_keyfile] [-m format] [-N new_passphrase] [-t dsa | ecdsa | ed25519 | rsa] ssh-keygen -p [-f keyfile] [-m format] [-N new_passphrase] [-P old_passphrase] ssh-keygen -i [-f input_keyfile] [-m key_format] ssh-keygen -e [-f input_keyfile] [-m key_format] ssh-keygen -y [-f input_keyfile] ssh-keygen -c [-C comment] [-f keyfile] [-P passphrase] ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile] ssh-keygen -B [-f input_keyfile] ssh-keygen -D pkcs11 ssh-keygen -F hostname [-lv] [-f known_hosts_file] ssh-keygen -H [-f known_hosts_file] ssh-keygen -R hostname [-f known_hosts_file] ssh-keygen -r hostname [-g] [-f input_keyfile] ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point] ssh-keygen -f input_file -T output_file [-v] [-a rounds] [-J num_lines] [-j start_line] [-K checkpt] [-W generator] ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider] [-n principals] [-O option] [-V validity_interval] [-z serial_number] file ... ssh-keygen -L [-f input_keyfile] ssh-keygen -A [-f prefix_path] ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number] file ... ssh-keygen -Q -f krl_file file ... ssh-keygen -Y check-novalidate -n namespace -s signature_file ssh-keygen -Y sign -f key_file -n namespace file ... ssh-keygen -Y verify -f allowed_signers_file -I signer_identity -n namespace -s signature_file [-r revocation_file]

ssh-key 생성

# email과 outfile명은 마음대로 지정하면 됨. $ ssh-keygen -t rsa -C "haneojin@gmail.com" -f "git-nightohl" $ ssh-keygen -t rsa -C "ej_han@heung.me" -f "git-eojin-han"

Enter passphrase (empty for no passphrase)

키 생성 명령어를 입력하면 다음으로 나오는 문구.
빈칸으로 둔 채 엔터를 쳐서 생략할 수 있다.
passphrase란 ? RSA 방식의 단점인 누군가 악의적으로 내 컴퓨터를 컨트롤 할 수 있게 된다면, 내 컴퓨터에 있는 SSH Key 를 가진 모든 시스템에 접근 권한이 생기기 때문에 SSH Key 에 추가적으로 비밀번호를 추가하는 보안 레이어입니다.

ssh-key 등록

# 윈도우에서 wsl2를 사용중이라면 아래 명령어를 먼저 해야함 # 안그러면 Could not open a connection to your authentication agent. 에러뜸. $ eval `ssh-agent -s`
윈도우 wsl2
# 관리자 권한 # ssh-agent가 Running 상태여야 ssh-add가 가능하다. $ get-service ssh* Status Name DisplayName ------ ---- ----------- Stopped ssh-agent OpenSSH Authentication Agent $ Set-Service -Name ssh-agent -StartupType Manual $ Start-Service ssh-agent $ get-service ssh* Status Name DisplayName ------ ---- ----------- Running ssh-agent OpenSSH Authentication Agent
윈도우 파워쉘
# ssh-add <ssh-key파일> $ ssh-add git-nightohl $ ssh-add git-eojin-han
ssh-key 등록
notion image
 

[2] 깃헙에 SSH Key 등록

본인이만든ssh-key.pub 파일 내용 복사하기

# paste board에 복사함 (내용 출력 후 컨트롤+C(맥은 커맨드+C)와 동일) $ pbcopy < ~/.ssh/git-nightohl.pub

설정 탭 이동

notion image
notion image

깃헙에 ssh-key등록

paste board에 복사해놨으므로 컨트롤+V(맥은 커맨트+V)해서 붙여넣으면 된다.
notion image
 

[3] ~/.ssh/config 파일 설정

config 파일 작성

해당 파일이 없다면 만들어서 기입함.
Host는 본인이 사용하기 편하면서도, 어떤 계정인지 구분 되도록 임의로 지정해주면 됨.
중복은 안되고 기본값은 github.com이므로, clone할 일이 많은 쪽의 Host는 github.com으로 그대로 두고, 나머지를 변경하는 것이 사용 시 편하다.
# office Host office-github.com # 아무거나 가능, 중복은 안됨 HostName github.com User git IdentityFile ~/.ssh/git-eojin-han # personal Host github.com # 아무거나 가능, 중복은 안됨 (가장 많이 쓰는 계정에 github.com으로 두는 것이 좋음) HostName github.com User git IdentityFile ~/.ssh/git-nightohl

테스트

본인이 지정한 호스트에 연결이 잘 되는지 테스트 (깃헙에 ssh-key를 등록한 상태여야함)
# ssh -T <본인이 지정한 호스트명> $ ssh -T office-github.com $ ssh -T my-github.com # 윈도우의 경우 # ssh -T git@<본인이 지정한 호스트명> $ ssh -T git@github.com
notion image
  • 윈도우 트러블슈팅
PS C:\Users\haneojin\.ssh> ssh -T github.com Bad owner or permissions on C:\\Users\\haneojin/.ssh/config
notion image
notion image
notion image
 

[4] git clone

이제 ssh-key를 통해 깃 클론을 해보자.
여기서 기본값으로 host가 github.com으로 되어 있으므로, 수정하지 않고 복붙 그대로 사용하려면 자주 클론하는 계정의 호스트를 github.com으로 두는 것이 편하다.
# Host 부분을 앞서 명시한 이름으로 수정해서 써야함. $ git clone git@my-github.com:nightohl/recoil_template.git
notion image
 

[5] (기존 작업중 폴더) remote origin 변경

💡
git clone을 하는 경우라면 신경쓰지 않아도 됨.
git clone하는 경우라면 상관없지만, 기존에 https로 작업하던 디렉토리의 경우 ssh-key를 이용하여 git push를 하려면 origin을 수정해야 한다. ( 아니면 origin말고 다른 alias를 추가해서 쓰던지. )
# 기존의 https origin 삭제 $ git remote remove origin # ssh-key로 origin 설정 # git remote add origin git@<내_로컬에_등록한_Host>:<repo소유자>/<repo이름> $ git remote add origin git@office-github.com:heungme/90m