Github 다중 계정 SSH키 등록
환경
프로젝트 경로 : Z:\project\test\
디렉토리 구조
Z:\project\test\
├── backup\
├── .git\
├── .ssh\
└── doc\
github 주소는 nuleongdung.github.io
SSH키를 프로젝트 폴더 하위 Z:\project\test\.ssh
github 아이디 : nuleongdung
github 이메일 : nuleongdung@gmail.com
SSH 서비스 상태 확인
sc query sshd
이 명령어는 Windows 서비스 목록에서 sshd 서비스의 상태를 확인합니다.
- RUNNING 상태이면 SSH 서버가 실행 중입니다.
- STOPPED 상태이면 SSH 서버가 중지되어 있습니다.
netstat으로 SSH 포트 확인
netstat -an | grep ":22"
LISTEN 상태의 줄이 나타나면 SSH 서버가 실행 중입니다.
PowerShell을 이용한 SSH 상태 확인 (Git Bash에서도 실행 가능)
powershell Get-Service -Name sshd
SSH 서비스의 상태를 출력합니다.
SSH 서버 실행하기 (서비스가 중지된 경우)
net start sshd
관리자 권한으로 실행 합니다
SSH 서버 자동 실행 설정
sc config sshd start=auto
로컬 프로젝트 폴더에서 git init 실행 및 설정
cd Z:\project\test\
git init
git config --local user.name "nuleongdung"
git config --local user.email "nuleongdung@gmail.com"
git config --local core.sshCommand "ssh -i Z:/project/test/.ssh/id_rsa"
- Z:\project\test\ 프로젝트 폴더 안에 ,git 폴더가 생성 되었을 겁니다
- SSH 키 경로 설정하여 해당 프로젝트에서 특정 키 사용
SSH 키 생성
1. Git Bash에서 실행 (권장)
mkdir -p Z:\project\test\.ssh
ssh-keygen -t rsa -b 4096 -C "nuleongdung@gmail.com" -f Z:/project/test/.ssh/id_rsa -N ''
-N '' → 작은따옴표('') 사용 (PowerShell과의 호환성 문제 방지)
2. PowerShell에서 실행
mkdir -p Z:\project\test\.ssh
ssh-keygen -t rsa -b 4096 -C "nuleongdung@gmail.com" -f Z:\project\test\.ssh\id_rsa -N "$null"
- C 옵션에는 GitHub 계정 이메일 입력
- -f 옵션으로 해당 프로젝트의 .ssh 폴더에 키 저장
PowerShell에서는 빈 문자열을 ""로 감싸면 오류가 발생할 수 있으므로, 다음과 같이 실행합니다.
-N "$null" → PowerShell에서 빈 패스워드를 올바르게 처리
3. 비밀번호 입력 없이 진행하는 방법
mkdir -p Z:\project\test\.ssh
ssh-keygen -t rsa -b 4096 -C "nuleongdung@gmail.com" -f Z:/project/test/.ssh/id_rsa
만약 위 방법이 모두 오류가 난다면, -N 옵션을 빼고 실행한 후 직접 엔터를 눌러 빈 비밀번호를 입력할 수도 있습니다.
실행 후 비밀번호 입력 요청 시 그냥 Enter를 두 번 입력하면 빈 패스워드로 생성됨.
SSH 에이전트에 키 추가
eval $(ssh-agent -s)
ssh-add Z:/project/test/.ssh/id_rsa
GitHub에 공개 키 추가
cat Z:/project/test/.ssh/id_rsa.pub
출력된 키를 복사하고, GitHub의 Settings > SSH and GPG keys 에 추가
SSH 연결 테스트
ssh -T git@github.com
성공 메세지
"Hi nuleongdung! You've successfully authenticated, but GitHub does not provide shell access."
Git 설정 및 원격 저장소 연결
1. 원격 저장소 추가 및 확인
git remote add origin git@github.com:nuleongdung/nuleongdung.github.io.git
git remote -v
출력 예시:
origin git@github.com:nuleongdung/nuleongdung.github.io.git (fetch)
origin git@github.com:nuleongdung/nuleongdung.github.io.git (push)
2 .gitignore 설정 (doc 폴더 제외)
echo "doc/" >> .gitignore
3. 커밋 및 푸시
git add html/
git commit -m "Initial commit for html folder"
git push -u origin main
VSCode의 code-workspace 설정
code-workspace 파일 수정
{
"folders": [
{
"path": "Z:/project/test"
}
],
"settings": {
"git.enableCommitSigning": true,
"git.sshCommand": "ssh -i Z:/project/test/.ssh/id_rsa"
}
}
- git.sshCommand를 프로젝트별로 다르게 설정
이제 VSCode에서 자동으로 해당 프로젝트에 맞는 SSH 키를 사용하여 GitHub에 연결됨.
추가적인 SSH 키 설정 (다른 프로젝트도 별도 설정하려면)
ssh-add -l # 현재 추가된 키 확인
ssh-add -D # 기존 추가된 키 제거
ssh-add Z:\0-project\git\다른프로젝트\.ssh\id_rsa
VSCode의 code-workspace에서 git.sshCommand를 프로젝트마다 다르게 설정하면 자동 적용
Git이 커밋을 할 때 GPG 서명을 요구하지만 계정의 비밀키(Secret Key)가 서명이 실패시
[ error: gpg failed to sign the data ]
프로젝트별 GPG 키 저장 위치 확인
gpg --homedir "Z:\0-project\git\nuleongdung.github.io\.ssh" --list-secret-keys --keyid-format LONG
프로젝트별 GPG 키 생성
gpg --quick-generate-key "nuleongdung <nuleongdung@gmail.com>" rsa4096 sign 1y
옵션별 설명
1️⃣ "nuleongdung <nuleongdung@gmail.com>"
- 키의 사용자 이름과 이메일을 지정
- Git 커밋 서명을 할 때 이 이름과 이메일이 사용됨
- 이메일은 GitHub에 등록해야 함
2️⃣ rsa4096
- RSA 알고리즘을 사용하여 4096비트 길이의 키를 생성
- RSA는 가장 널리 사용되는 암호화 알고리즘 중 하나
- 4096비트는 보안성이 높음
3️⃣ sign
- 서명(Signing) 용도로만 사용할 키를 생성
- Git 서명 및 인증 목적으로 사용됨
- 다른 용도(예: 암호화)로 사용하려면 cert 또는 encrypt 추가 가능
4️⃣ 1y
- 키의 유효기간을 1년(1 year)으로 설정
- 1년이 지나면 키를 갱신해야 함
- 영구적으로 사용하려면 0을 입력하면 됨 (권장하지 않음)
새로운 GPG 키 ID 확인
gpg --list-secret-keys --keyid-format LONG
sec rsa4096/XXXXXXXXXXXXXXXX 2023-05-17 [SC]
키 정보...
uid [ultimate] nuleongdung <nuleongdung@gmail.com>
cd Z:\project\test
git config --local user.signingkey XXXXXXXXXXXXXXXX
git config --local commit.gpgsign true
XXXXXXXXXXXXXX 부분을 위에서 찾은 GPG 키 ID로 변경
GitHub에 새로운 GPG 공개키 추가
gpg --armor --export XXXXXXXXXXXXXXXX > ./my_public_key.asc
출력된 키를 GitHub → Settings → SSH and GPG keys → GPG keys에 추가
테스트
echo "test" > test.txt
git add test.txt
git commit -S -m "테스트 GPG 서명"
✔️ 정상적으로 GPG 서명이 적용되면 성공
✅ .ssh 폴더를 GPG 홈 디렉토리로 사용하면 문제 발생 가능성이 높음
✅ 기본 .gnupg 폴더를 사용하고, 프로젝트마다 GPG 키를 따로 생성해서 git config --local로 지정하는 것이 가장 안정적인 방법입니다
'APP' 카테고리의 다른 글
크로미움(Chromium) 기반의 오픈소스 브라우저 중에서 포터블(portable) 설치가 가능한 브라우저 (0) | 2025.02.17 |
---|---|
VSCode에서 터미널 Git Bash 추가 (3) | 2025.02.02 |
Git Portable 설치 및 설정 (2) | 2025.01.30 |
페이지 로드 시간을 측정 (1) | 2025.01.07 |
오픈 소스 브라우저 엔진들의 메모리 사용량 비교 (2) | 2024.12.26 |