Github Page

9/16/2025

VSCode Github 의 계정 2개 설정 (Window)

1. VS Code 의  Github 2개 계정 설정 

Github의 인증은 예전부터 SSH Key기반으로 제공을 해주고 있었으며, 서비스가 강화되면서 더 보안이 높은 인증들이 지원이 되고 있다. 

Linux에서 설정 한다고 하면, 사실 어렵지 않을 거라고 생각되어지며, Window 개발 환경이라면, 매번 제약이 따른다. 
사실 Linux에서 개발하는 게 가장 편하지만, 어쩔 수 없이 Window 기반으로 설정에 대해 정리하다.

  •  Github의 SSH Key 기반 2개 계정 설정 
Github 의 연결되는 거의 기본 인증 방식으로 SSH기반으로 사용하며  크게 어렵지는 않다. 
인터넷에 뒤져 보면 쉽게 가능하며, Github 의 신 기능들을 사용하는데, 많은 제약이 따른다.
SSH 기반으로 한다면, 기본 기능만 사용한다고 생각하면 될 것 같다. 

  •  Github의 SSH Key 추측 과 결론 
Github SSH Key로만 인증하여 할 경우, Github Action 와 Github Project 연결도 되려나 처음 생각했으나, 이것은 나중에 보니 다 나의 멍청한 의심인 것 같다. 
SSH기반으로 하면, Github Action 에 제한 있을 줄 알았는데, 별도 PAT(Personal Acess Tokens) 발급 받아서 하면, 제한된 기능이 동작이 된다.
Github Action (Secret) 
Github Project or Action 에서 관련 관련 정보들이 필요할 경우가 있다. 

  • Github Action 
처음 Github Action 기능 출시 할 때만 해도 영문 Manaul로 삽질 무지 했는데, AI(ChatGPT)가 너무 좋아져서 구지 이걸 작성을 직접 해야 하나 의문이 든다. 


  • Github HTTP PAT(Personal Acess Tokens)
PAT나온 지는 꽤 되었으며, 나도 사용한 지가 꽤 되었는데 매번 사용 설정이 좀 헷갈린다. 
PAT 기반 설정하는 방법은 
          Github 의 우측 프로필 아이콘-> Settings -> Developer Settings

말 그대로 PAT는 Token 이며, Hash 값이며  Password 사용하는 기능이다. 
발행 시 한번 만 복사할 기회가 주며, 그 다음에는 볼 수가 없다. 
그렇다고 너무 겁먹을 필요도 없는 게,  실수를 해도 다시 발행하면 되니 문제 없다. 

PAT 토큰, API Key 값과 비슷하며,  Password 사용되어진다. 

  • PAT(Personal Access Tokens)
  1. Fine-grained tokens  :  보안이 더 강화 되어 일일이 다 설정을 해야 하며 까다롭다.
  2. Tokens( Classic) : 일단 간단하게 쉽게 사용 가능 --> 가능하면, 이걸 선택 
    •  repo : Git 각 Respository 접근 
    •  gist : GIST
    •  project : Project 기능
    •  workflow : Github Action
이외 본인이 더 추가 할게 있다면, 읽어보고 더 선택하자 (추가적으로 변경도 가능하다)
Codespace 같은 경우는, Web broswer에서 직접 VS Code가 실행이 되어진다.
기간은 Custom으로 한 1년 설정하면 될 듯하다.



1.1 Window 의 자격 증명  (PAT 1개 설정) 

일단 HTTPS 기반의 PAT로 1개의 계정을 설정을 해보자.

  • Window 자격 증명 관리자( 실행 후 1개 계정 추가 ) 

  1.   제어판(Control Panel) → 사용자 계정(User Accounts) →자격 증명 관리자(Credential Manager)
  2.   우측 Window 자격 증명 (Credential Manager)
  3.   아래 일반 자격 증명 추가 

    •  인터넷 또는 네트워크 주소: git:https://github.com 
    •  사용자 이름: name
    • 패스워드: Token






1.2 각 Git System 설정(Config) 확인  

상위처럼 설정하고 아래와 같이 설정하면, 상위 1 개로 모두 관리가 되어진다.

  • Repository Git 의 설정 확인 
  1.  Resository Git 설정(config) 확인 : 
    1. gitconfig 분석:  각 아래로 gitconfig 분리되면서, 각 차이 구분 
      1. system : Git 설치되면서 설정  git/etc/gitconfig 
      2. global : 이 계정에 적용되어진 .gitconfig  
      3. local : 각 Respository 설정 .git/config 
    2. user.name
    3. user.email
    4. remote.xxxx 확인 
  2. .gitconfig 위치 확인 :  global 기반으로 확인 
    1. .gitconfig 파일의 위치 파악하고 변경 사항 확인 과 Backup 
    2. 본인이 직접 설정을 하고, 원하는 대로 확장 분리해서 설정  

> git config -h   // git config 관련 명령어들 확인
> git config --list // git config 설정된 것 확인
git config --list --show-origin --show-scope // globla/system 위치 확인


  • .gitconfig 위치 확인 과 각 설정 확인 
>   git config --list --show-origin --show-scope //system 보단 global에서 설정변경
```
system  file:C:/Program Files/Git/etc/gitconfig filter.lfs.required=true
system  file:C:/Program Files/Git/etc/gitconfig http.sslbackend=openssl
system  file:C:/Program Files/Git/etc/gitconfig http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt        
system  file:C:/Program Files/Git/etc/gitconfig core.autocrlf=true
system  file:C:/Program Files/Git/etc/gitconfig core.fscache=true
system  file:C:/Program Files/Git/etc/gitconfig core.symlinks=false
system  file:C:/Program Files/Git/etc/gitconfig pull.rebase=false
system  file:C:/Program Files/Git/etc/gitconfig credential.helper=manager-core
system  file:C:/Program Files/Git/etc/gitconfig credential.https://dev.azure.com.usehttppath=true
system  file:C:/Program Files/Git/etc/gitconfig init.defaultbranch=master
global  file:C:/SPB_Data/.gitconfig     core.autocrlf=true
global  file:C:/SPB_Data/.gitconfig     
...
```


  • Repository Git 의 설정 변경 
global 옵션이 들어가면, 거의 default 사용 생각하면 된다. 

# (중요) 자격 증명 의 Respository 마다 저장되는 것 방지 하고 상위 1개의 기반으로 사용

> git config --global credential.useHttpPath false


# GCM(Git Credential Manager) 통일 (자격증명)

> git config --global credential.helper manager-core




# (Global) 본인 User 설정 

> git config --global user.email "xxxx"

> git config --global user.name  xxxx


# (Global) 본인 User 확인

>  git config user.email

>  git config user.name 




  • Git의 기본 설정 값 (.gitconfig) 확인 과 변경 
.gitconfig  설정확인 (단일구성)
global로 설정되면, .gitconfig에 다 저장되어 관리되어지며, 이곳에서 직접 설정해도 좋다 

```
[user]
    name = xxx
    email = xxxx

[credential]
useHttpPath = false
helper = manager-core
```

  • Remote 정보 확인 및 설정 
> git remote -v
> git remote set-url origin https://github.com/<org>/<repo>
> git remote set-url origin https://github.com/<user>/<repo>


  • 실제 Respository 사용할 경우 
> git fetch 
> git pull origin main
> git clone  ssh:// or https:// 
> git push 



2. Window 의 자격 증명 (PAT 2개 구성 설정) 

일단 HTTPS 기반의 PAT로 2개의 계정을 설정을 해보자.

  • 자격 증명 관리자 2개 추가 

  1.   제어판\사용자 계정\자격 증명 관리자
  2.   우측 Window 자격증명 
  3.   아래 일반 자격 증명 추가 

    •  인터넷 또는 네트워크 주소: git:https://github.com 
    •  사용자 이름: name
    • 패스워드: Token







2.1 Git 의 설정(.gitconfig)  재구성  

나의 경우, 각 Directory 마다 다르게 설정이 되게 원해서 아래와 같이 설정 구성.
우선 상위에서 찾은 global .gitconfig 파일 위치를 찾아서,  
기존 파일(.gitconfig) 1개의 단일 구성이 아니라, 2단계 재구성하자 

  • Git 의 기본 설정(.gitconfig) 값 파일 구성 
  1. .gitconfig  : 전체 설정으로 동일하게 적용 
    1. .gitconfig-personal : 특정 Direcoty 의   나의 프로젝트에만 부분 적용 
    2. .gitconfig-company: 특정 Directory 의  회사 프로젝트에만 부분 적용 

  • .gitconfig 설정 구성 
```
# 공통
[core]
    autocrlf = true

# Github 계정-1  HTTPS+PAT
[includeIf "gitdir/i:D:/Works/Project_personal/**"]
    path = C:/SPB_Data/.gitconfig-personal

# Github 계정-2 HTTPS+PAT
[includeIf "gitdir/i:D:/Works/Project/**"]
    path = C:/SPB_Data/.gitconfig-company

# useHttpPath False 가 2개의 User를 제공못함
[credential]
useHttpPath = false
helper = manager-core

```

  • .gitconfig-company
```
[user]
    name = xxxx
    email = xxxxx
```

  • .gitconfig-personal
```
[user]
    name = xxxx
    email = xxxxx
```

  • Git의  설정 재 확인 
.gitconfig 위치 와 .gitconfig-company 와 .gitconfig-personal 각 확인 
git config --list --show-origin --show-scope


처음에 상위처럼 하면, 될 줄 알았으며, 될 거라고 생각을 했다. 
하지만, 보안 이슈로 상위처럼 2개의 계정으로만, 쉽게 자격 증명이 되어지지는 않는다.
1개의 계정일 경우는 크게 문제가 없지만, 2개부터는 httppath false 로는 안되어지는 것을 알았다.

즉 상위처럼, 간단히 2개 설정으로 관리 할 수 없다. 

  • HTTPS 통해 SSH 연결 
이 방법도 생각을 해보았으나, Username 분리가 되지 않아 이 부분 포기~


2.2 Git 기본 설정 값 보완 

HTTPS 기반의 PAT로 사용을 2개 이상 사용하고 싶다면, credential.useHttpPath true 옵션설정하면,
HTTPS PAT로 2개의 계정 이용은 가능하지만, 자격 증명 관리하기가 너무 힘들어 이 방법은 그냥 포기했다. 

  • Git의  설정 재 확인 

# "Repo 경로까지 쓰는 저장" true 만

> git config --global credential.useHttpPath true



매번 Repository가 자격 증명에 등록되는 구조로 자격 증명을 보면, 모든 Repository 등록되어, 관리가 힘들다

안 쓰기로 결정함 



3. Window 의 계정 2개 (PAT 1개 + SSH 1개 혼합 구성)

  • 자격 증명 관리자 2개 추가 

  1.   제어판\사용자 계정\자격 증명 관리자
  2.   우측 Window 자격증명 
    1. 기존 2개에서 1개 삭제 







  • 나의 결론 
현재 이 방법으로 사용하고 있으며,  분리해서 잘 동작을 전체 확인을 하였다. 
SSO까지는 별도로 언급을 안 하겠으며,  잘 동작하여 이걸로 사용하기로 최종 결정하였다.
더불어, 구지 2개가 아니라, SSH이므로 여러 개로도 설정 가능하다 


3.1 Git 의 설정(.gitconfig)  재구성  


우선 상위에서 찾은 global .gitconfig 파일 위치를 찾아서,  
기존 파일(.gitconfig) 1개의 단일 구성이 아니라, 2단계 재구성하자  

  • Git 의 기본 설정 값 파일 구성 
  1. .gitconfig  : 전체 설정으로 동일하게 적용 
    1. .gitconfig-personal : 특정 Direcoty 의   나의 프로젝트에만 부분 적용 
    2. .gitconfig-company: 특정 Directory 의  회사 프로젝트에만 부분 적용 

  • .gitconfig 설정 구성 
```
# 공통
[core]
    autocrlf = true

# Github 계정-1  SSH
[includeIf "gitdir/i:D:/Works/Project_personal/**"]
    path = C:/SPB_Data/.gitconfig-personal

# Github 계정-2  HTTPS+PAT
[includeIf "gitdir/i:D:/Works/Project/**"]
    path = C:/SPB_Data/.gitconfig-company

```

  • .gitconfig-company
HTTPS 이므로 관련 부분 설정 
```
[user]
    name = xxxx
    email = xxxxx

[credential]
useHttpPath = false
helper = manager-core

```

  • .gitconfig-personal
SSH로 연결이 잘 안되어, 아래와 같이 직접 Core에 sshCommand 주어 진행 
```
[user]
    name = xxxx
    email = xxxxx

[core]
    sshCommand = C:/Windows/System32/OpenSSH/ssh.exe -F C:/Users/jhlee/.ssh/config
```



3.2 SSH의 Key 생성 과 Github 설정 

Window에서 Github 설정을 위해서 SSH 관련 설정을 진행하자. 

새 SSH 키 생성 및 ssh-agent에 추가

GitHub 계정에 새 SSH 키 추가

  • SSH key 생성 과 확인 
ECDSA or RSA 도 다 괜찮으니, 본인 원하는 것으로 생성 

>  ssh-keygen -t ed25519 -C "your_email@example.com" -f "$env:USERPROFILE\.ssh\id_ed25519"  // 엔터 2번 

> cd $env:USERPROFILE\.ssh\


  • Github에 Public Key 등록 
id_ed25519.pub


상위 Github Manual 더 자세히 나오므로 그곳을 참조 하시길~ 


3.3 SSH Config 설정 


상위에서 만든 Key 기반으로 Github 설정 .ssh/conifg  추가하여 설정하자. 

  • SSH 동작 확인 
> ssh -V                                                              
OpenSSH_for_Windows_9.5p1, LibreSSL 3.8.2

  • .ssh/config 
파일 수정 후, 권한을 쓰기 권한을 없애자
```
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes
```

  • SSH 기본 테스트 
상위 .ssh/config 권한 쓰기 제거 확인 후

> ssh -T -v git@github.com      // 상위 .ssh/config -> hostname 
....
Hi JeonghunLee! You've successfully authenticated, but GitHub does not provide shell access.

SSH 연결 테스트


3.4 Git의 설정 확인 및 테스트 

상위에서 우선 .gitconfig 위치를 찾아 아래와 같이 1개의 구성이 아니라 단계 별로 구성해보자 
본인의 Respository로 가서, 이제 각 Git 의 동작들 을 확인을 해보자 

  • Git의  설정 재 확인 
  1. .gitconfig 
    1. .gitconfig-company
    2. .gitconfig-personal 
상위 부분 다 적용되었는지 확인 
git config --list --show-origin --show-scope


  • Git의  기존 SSH 설정 삭제 (나는 사용)
상위 .gitconfig-personal 의 설정 이며, 상위 설정대로 함 
>  git config --unset core.sshCommand


  • Git 의 Remote 정보 확인 및 설정 (HTTPS -> SSH변경) 
> git remote -v
> git remote set-url origin ssh://github.com:<user>/<repo>  // 상위 .ssh/config hostname  
> git remote set-url origin github.com:<user>/<repo>  // 상위 .ssh/config hostname  


  • Git Remote 접근 가능 확인 
> git ls-remote origin


  • Git 의 TEST
> git fetch 
> git pull origin main

댓글 없음 :