[Github] SSH 접속 설정하기

ms-shin·2024년 3월 1일
1

Github

목록 보기
1/1
post-thumbnail

GitHub SSH 접속 설정하기


GitHub에서는 다음 3가지 방법으로 Git접근을 수행할 수 있도록 하고 있다.

  • GitHub는 https 로 접속
  • ssh 로 인증서를 발급하여 접근하는 방법
  • git cli 를 이용하여 접근하는 방법

이 중 ssh로 접근하는 방법에 대해서 알아보자.
ssh접근을 설정해두면, username과 password를 입력하지 않고 git과 인터렉션 할 수 있다.

SSH key 생성하기


ssh-keygen -t ed25519 -C "your_email@example.com"
  • ssh-keygen: SSH 키 생성 도구입니다. 이 도구는 사용자의 SSH 프로토콜을 위한 공개키와 개인키를 생성합니다.

  • -t ed25519: 키 유형을 지정합니다. ed25519는 SSH 키를 생성하기 위해 사용되는 현대적이고 보안적인 알고리즘입니다. 이는 RSA 알고리즘보다 더 짧은 키 길이를 제공하면서도 높은 보안 수준을 유지합니다.

  • -C "your_email@example.com": 이는 키에 주석을 추가하는 옵션입니다. 주석은 보통 키를 식별하기 위해 사용자의 이메일 주소로 설정됩니다. 이 부분은 선택적이며, 주로 키를 관리할 때 어떤 키인지 식별하기 위한 용도로 사용됩니다.

ssh-keygen -t ed25519 -C "alstn5038@gmail.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/ms/.ssh/id_ed25519): (그냥 enter/ex my-work)
Enter passphrase (empty for no passphrase): (그냥 enter)
Enter same passphrase again: (그냥 enter)
Your identification has been saved in /Users/ms/.ssh/id_ed25519
Your public key has been saved in /Users/ms/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:3j+g7Tzo//UiKjxitfXcBSQsaFWFe5qIXWJ8BPqC5+w alstn5038@gmail.com
The key's randomart image is:
+--[ED25519 256]--+
|         oo+.o.  |
|        o.. = .  |
|       ... o +   |
|       . .+ + o  |
|      . S+.= + . |
|       =oo= o   .|
|       o+*.+ ... |
|      o.B.o.=.o. |
|     . oE==+oo ..|
+----[SHA256]-----+

따로 설정하기 싫으면 그냥 다 enter 치면된다.

다음과 같이 id_ed25519 라는 개인키 파일이 생성되었고, id_ed25519.pub이라는 공개키가 생성됐다.

ssh-agent 활성화하기


eval "$(ssh-agent -s)"
Agent pid 38819

config 파일 설정하기


  • ~/.ssh/config 파일에 다음 내용을 추가한다.
Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

ssh-agent 에 ssh 개인키 추가


> ssh-add -K ~/.ssh/id_ed25519
WARNING: The -K and -A flags are deprecated and have been replaced
         by the --apple-use-keychain and --apple-load-keychain
         flags, respectively.  To suppress this warning, set the
         environment variable APPLE_SSH_ADD_BEHAVIOR as described in
         the ssh-add(1) manual page.
Identity added: /Users/ms/.ssh/id_ed25519 (alstn5038@gmail.com)

# 아래로 하라고 한다..
> ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Identity added: /Users/ms/.ssh/id_ed25519 (alstn5038@gmail.com)
  • Host : 이 구성이 모든 호스트에 적용됨을 의미합니다. 는 모든 주소에 대한 와일드카드로 사용됩니다. 즉, 이 구성은 어떤 SSH 서버에 접속할 때도 적용됩니다.
  • AddKeysToAgent yes: SSH 키를 ssh-agent에 자동으로 추가하도록 설정합니다. ssh-agent는 개인 키를 메모리에 저장하는 프로그램으로, 사용자가 서버에 로그인할 때마다 비밀번호를 입력하지 않아도 됩니다.
  • UseKeychain yes: macOS 시스템에서 사용됩니다. 이 설정은 macOS의 키체인을 사용하여 SSH 키의 패스워드를 관리하고, 필요할 때 자동으로 불러올 수 있게 해줍니다. 이를 통해 사용자는 매번 키의 패스워드를 입력하지 않고도 SSH 키를 사용할 수 있습니다.
  • IdentityFile ~/.ssh/id_ed25519: SSH 키의 경로와 파일 이름을 지정합니다. 여기서는 사용자의 홈 디렉토리 아래에 있는 .ssh 폴더 내의 id_ed25519 파일을 개인 키로 사용하도록 설정합니다. id_ed25519는 공개 키 암호화 방식 중 하나인 Ed25519를 의미합니다.

Repository ssh key 추가하기


ssh_key 복사

pbcopy < ~/.ssh/id_ed25519.pub

공개키 내용을 복사하여 github 계정 셋팅에 들어가 ssh키 등록을 해준다.

아래 setting으로 들어가준다.

[SSH and GPG keys]

아래와 같이 Title에는 구분을 위한 값을 넣고
Key에 위에서 복사된 값을 넣어준다.

pbcopy < ~/.ssh/id_ed25519.pub

ssh키가 설정된 것을 알 수 있다.

기존 깃헙: Https -> SSH로 변경

  1. 기존 remote origin 삭제
  2. ssh 접속 정보로 remote orgin 등록
  3. remote origin main 을 upstream으로 설정
git remote remove origin
git remote add origin git@github.com:DDD-Community/DDD-10-WABLE-SERVER.git
git remote -v
origin	git@github.com:DDD-Community/DDD-10-WABLE-SERVER.git (fetch)
origin	git@github.com:DDD-Community/DDD-10-WABLE-SERVER.git (push)

한 노트북으로 여러 깃헙 계정 사용하기


아래와 같이 개인 계정과 회사 계정을 위한 ssh키를 생성한다.
위의 프로세스와 동일하게

  • 개인 계정 개인키/공개키
  • 회사 계정 개인키/공개키
> ssh-keygen -t ed25519 -C "{personal-email}"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/ms/.ssh/id_ed25519): personal-email

> ssh-keygen -t ed25519 -C "{work-email}"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/ms/.ssh/id_ed25519): work-email

아래는 ssh agent가 사용할 개인키를 등록하는 과정이다.

ssh-add --apple-use-keychain ~/.ssh/id_work

ssh-add --apple-use-keychain ~/.ssh/id_personal

파일을 생성한다.

주의

간단히 설명하자면, 아래 Host github.com-personal으로 해당하는 ssh 주소라면 첫번째 key를 사용한다는 뜻이다.
그래서 git clone git@github.com:looko-corp/acloset-kr-go.git 으로 그대로 쓰면 연결이 안되고 git@github.com-personal:looko-corp/acloset-kr-go.git 로 수정해줘야 한다.

// vim ~/.ssh/config (파일 생성)
Host github.com-personal
    AddKeysToAgent yes
    UseKeychain yes
    HostName github.com
	User Minsoo-Shin
    IdentityFile ~/.ssh/id_personal

Host github.com-work
    AddKeysToAgent yes
    UseKeychain yes
	HostName github.com
	User looko-corp
    IdentityFile ~/.ssh/id_work

User는 본인 깃헙 계정을 입력해야한다. 그리고 Organization이라면 Organization명을 입력해야하는 것 같다.

계정은 msshindev임에도 looko-corp로 입력해야 되더라..

그냥 아래 git@github.com:looko-corp/acloset-kr-go.git

위의 볼드체 되어있는 부분을 넣으면 되는 것 같다.

그래서 이렇게 directory마다 알아서 ssh키로 접근을 할 수 있다.

https://devocean.sk.com/blog/techBoardDetail.do?ID=163311

https://velog.io/@igotoo/github-%EC%A0%91%EC%86%8D%EC%9D%84-https%EC%97%90%EC%84%9C-ssh-%EC%A0%91%EC%86%8D%EC%9C%BC%EB%A1%9C-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0

profile
지식을 깊게 파고드는 개발자입니다.

0개의 댓글