[Blog]
- [Blog] ga4 Analytics Setting 방법
- [Blog] 깃허브 댓글 utterances 사용법
- [Blog] Google AdsensePermalink
- [Blog] Kakao Adfit
- [Blog] git_blog 검색엔진 세팅 등록(구글/네이버/다음)
- [Blog] git_blog Using multiple accounts
- [Blog] google indexing api 자동색인 처리해보자
- [Blog] 깃허브 댓글 giscus 사용법
git 사용하다보면 한컴퓨터에서 여러개 계정을 사용할수있따.
예를들어 회사 계정 + 개인 블로그 계정을 말한다.
git clone
$ git clone //git http
Cloning into 'metaclub-web'...
remote: Repository not found.
fatal: repository 'https://github.com/주소주소 못차음 어쩌꾸' not found
처음 내 계정으로 로그인해두고 회사계정에 git을 clone 하려고하면 찾을수없다고 나온다
1. 원인
mac 원인은 key체인 접급
여기서 보면 저번에 git clone 하면서 로그인한 아이디가 저장되어있다.
2. ssh 키생성후 git에 적용
1. ssh key 생성하기
먼저 git bash를 실행한 후 아래와 같은 명령어를 입력해줍니다.
$ cd ~./ssh
$ ls -al
만약 폴더가 없다면 mkdir .ssh 로 만들어줍니다.
$ total 17
$ drwxr-xr-x 1 nuridal 197121 0 Aug 30 12:13 ./
$ drwxr-xr-x 1 nuridal 197121 0 Aug 30 12:13 ../
$ -rw-r--r-- 1 nuridal 197121 2590 Aug 30 12:20 id_rsa_B
$ -rw-r--r-- 1 nuridal 197121 563 Aug 30 12:20 id_rsa_B.$ pub
2.SSH key를 생성
하는 명령을 내립니다. github에서 사용하는 email과 생성될 키 이름을 각각 지정해야 합니다. 먼저 github에 email은 “userA@example.com” 고 SSH키를 “id_rsa_userA” 이름으로 생성합니다. 실행 명령은 다음과 같습니다.
$ ssh-keygen -t rsa -C "userA@example.com" -f "id_rsa_userA"
아래와 같이 프롬프트에 보안 암호를 입력하라는 메시지가 나오면 그냥 Enter를 칩니다. 그러면 암호 입력없이 그냥 사용할 수 있습니다.
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:
3. 2과 동일한 방법으로 userB(email : userB@example.com )의 SSH Key를 “id_rsa_userB” 로 생성하는 명령을 내립니다.
$ ssh-keygen -t rsa -C "userB@example.com" -f "id_rsa_userB"
4. SSH key 가 생성된 것 확인 합니다.
$ ls -al ~/.ssh
표시된 목록에 id_rsa_userA , id_rsa_userA.pub와 id_rsa_userB, id_rsa_userB.pub 파일이 추가된 것을 확인할 수있습니다. .pub 확장자가 붙은 파일이 공개키 파일이고 붙지 않은 파일이 개인키 입니다.
5. ssh-agent에 새로 생성한 SSH key를 추가해 줍니다. 먼저 백그라운드에 ssh-agent 실행시켜 줍니다. 표시되는 pid 값은 매번 달라지니 제시되는 예제라 달라도 문제가 되지 않습니다.
1
2
3
4
5
6
7
8
9
10
11
12
$ eval "$(ssh-agent -s)"
> Agent pid 59566
> 각각 생성한 userA와 userB의 SSH 개인키를 ssh-agent에 추가해 줍니다.
$ ssh-add ~/.ssh/id_rsa_userA
$ ssh-add ~/.ssh/id_rsa_userB
ssh-agent에 정상적으로 SSH 개인키가 추가되었는지 확인합니다.
$ ssh-add -l
3072 SHA256........userA@example.com (RSA)
3072 SHA256........userB@example.com (RSA)
3.GitHub에 새 SSH 공개키 추가하기
공개키를 각 계정에 추가해 주는 과정을 진행합니다. ~/.ssh/id_rsa_userA.pub 와 ~/.ssh/id_rsa_userB.pub 파일이 공개키 입니다.
- 공개키를 먼저 복사하기 위해 VSCode에서 userA의 공개키 파일을 열고 내용을 복사해 줍니다. VSCode를 사용하지 않고 다른 편집기를 사용하시면 사용하시는 편집기를 이용해 공개키 파일을 열어 전체 내용을 복사합니다.
$ code ~/.ssh/id_rsa_userA.pub
-
userA로 GitHub에 로그인 후 오른쪽 상단의 프로필 사진을 클릭한 후 Settings 메뉴를 선택합니다.
-
왼쪽 사이드바 메뉴에서 “SSH and GPG keys” 를 선택한 후 오른쪽 상단의 “New SSH key” 단추를 클릭합니다.
-
“Title” 입력칸에 등록할 공개키를 설명할 수 있는 문구를 입력 합니다. 예로 notebook-userA 처럼 각 노트북 , 데스크탑 등 사용하는 컴퓨터를 구분할 수 있도록 작성하면 편리합니다. “key” 필드에는 복사해둔 공개키를 붙여놓은 후 아래 “Add SSH key” 단추를 클릭합니다.
4. SSH config 파일 설정하고 SSH 연결 테스트 하기
원격 SSH 서버에 연결을 설정할 때 사용되는 SSH 옵션을 SSH config 파일에 작성을 합니다.
Git Bash 실행합니다. SSH config 파일은 ~/.ssh 폴더 밑에 위치해야 합니다. 기존에 있으면 수정하시고 없으면 새롭게 만들어 작성해 줍니다. VSCode 에서 config 파일을 작성합니다.
$ cd ~/.ssh
$ code config
아래와 같은 내용으로 작성합니다. SSH 클라이언트 config 파일의 내용은 섹션으로 나눠있고 각 섹션의 시작은 Host 지시자로 시작합니다.
#userA에 대한 SSH 설정
Host github.com-userA
HostName github.com
User userA
IdentityFile ~/.ssh/id_rsa_userA
#userB에 대한 SSH 설정
Host github.com-userB
HostName github.com
User userB
IdentityFile ~/.ssh/id_rsa_userB
- 2, 8 라인 SSH 연결에 사용될 대표이름 Host에 대한 값이 중요합니다. 나중에 ssh로 연결할 때 Host 지시자에 지정된 값이 사용되니 구분하기 쉽고 기억하기 편리한 이름으로 작성합니다.
- 3, 9 라인 : github의 도메인
- 4,10 라인 : github 사용자 아이디
- 5, 11 : 앞서 생성한 개인키 경로
나중에 SSH 연결을 할 때 Host에 지정한 값이 github.com-userA를 호출하시면 그 섹션에서 지정한 HostName에 접속해 User의 계정을 가지고 IdentityFile 의 개인키로 참조해 인증을 하게 됩니다.
- SSH 연결을 테스트 하기 위해 아래의 명령을 실행합니다.
$ ssh -T git@github.com-userA
성공하면 “Hi userA! You’ve successfully authenticated, …..” 메시지가 출력합니다. 결과 메시지에 userA처럼 username이 포함되면 연결에 성공되었습니다.
git은 반드시 git으로 작성합니다. 자신의 계정으로 변경하시면 안됩니다 github.com-userA 는 SSH config 파일에서 Host 지시자 뒤에 설정한 값으로 대신하시면 됩니다.
5. SSH로 clone 받기
이제는 리모트 리포지토리를 clone 받을 때 HTTPS 프로토콜이 아닌 SSH로 clone을 받아야 합니다.
SSH의 기본 경로는 git@github.com:github계정/리포지토리명.git 입니다. github의 계정이 userA이고 리포지토리의 이름이 userA-test이면 git@github.com:userA/userA-test.git 이 됩니다. 이 SSH 경로를 SSH config에 설정한 것에 맞춰서 변경해 주어야 합니다.
위에서 SSH config 파일 설정할 때 github의 userA 에 대한 정보를 담은 Host를 github.com-useA로 지정해 두었습니다. 기본 경로의 github.com을 SSH config 파일에서 설정한 대로 github.com-userA로 변경해줍니다.
$ git clone git@github.com-userA:userA/userA-test.git
clone 명령이 실행되면서 SSH config 파일에서 Host에 github.com-userA 섹션을 찾아 SSH로 연결해 인증 작업을 진행하게 됩니다.
마무리
길고 긴 내용이었습니다. 각 단계도 길고 확인해야 할 내용도 많고 에러도 갑자기 튀어나오고… 제가 작업하면서 경험했던 오류와 그 해결을 위한 자료 검색을 통해서 저에게 가장 적절했던 순서를 찾아 정리했습니다.
github에서 private 리포지토리를 더 많이 사용하는 저는 계정 하나만 사용하면 VSCode가 많은걸 해결해 줘서 편리하게 사용하긴 했습니다. 근데 제 개인작업용과 프로젝트 계정을 분리해야만 했고 계정을 바꿔가며 private 리포지토리를 사용하는것에 많은 문제가 있었습니다. 그래서 이렇게 길고 복잡하지만 굳이 SSH 설정을 해야 했습니다. 마이크로소프트가 좀 더 힘내서 SSH 설정도 GUI 모드로 편리하게 해 줄 날이 있을거라 기대해 봅니다.
모두들 화이팅입니다.