GitHub에서는 다음 3가지 방법으로 Git접근을 수행할 수 있도록 하고 있다.
이 중 ssh로 접근하는 방법에 대해서 알아보자.
ssh접근을 설정해두면, username과 password를 입력하지 않고 git과 인터렉션 할 수 있다.
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이라는 공개키가 생성됐다.
eval "$(ssh-agent -s)"
Agent pid 38819
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
> 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를 의미합니다.
ssh_key 복사
pbcopy < ~/.ssh/id_ed25519.pub
공개키 내용을 복사하여 github 계정 셋팅에 들어가 ssh키 등록을 해준다.
아래 setting으로 들어가준다.

[SSH and GPG keys]

아래와 같이 Title에는 구분을 위한 값을 넣고
Key에 위에서 복사된 값을 넣어준다.
pbcopy < ~/.ssh/id_ed25519.pub

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

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키로 접근을 할 수 있다.