[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