[1] ssh-key 생성ssh-key 파일 저장 경로ssh-keygen 사용법ssh-key 생성Enter passphrase (empty for no passphrase)ssh-key 등록[2] 깃헙에 SSH Key 등록본인이만든ssh-key.pub 파일 내용 복사하기설정 탭 이동깃헙에 ssh-key등록[3] ~/.ssh/config 파일 설정config 파일 작성테스트[4] git clone[5] (기존 작업중 폴더) remote origin 변경
[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`
# 관리자 권한 # 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

[2] 깃헙에 SSH Key 등록
본인이만든ssh-key.pub 파일 내용 복사하기
# paste board에 복사함 (내용 출력 후 컨트롤+C(맥은 커맨드+C)와 동일) $ pbcopy < ~/.ssh/git-nightohl.pub
설정 탭 이동


깃헙에 ssh-key등록
paste board에 복사해놨으므로 
컨트롤+V(맥은 커맨트+V)해서 붙여넣으면 된다.
[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

- 윈도우 트러블슈팅
 
PS C:\Users\haneojin\.ssh> ssh -T github.com Bad owner or permissions on C:\\Users\\haneojin/.ssh/config



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

[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