Git 초기 세팅, Github SSH/GPG 키 등록하기

git을 처음 설치한 후 세팅 과정을 정리합니다.

SSH/GPG 키를 생성하고 이를 Github에 등록하는 방법입니다.

Git 초기 세팅, Github SSH/GPG 키 등록하기

Git 설치 방법은 생략합니다. Windows는 Git bash가 함께 설치돼야 합니다.

git 초기 설정은 링크를 참고합니다.

Windows의 경우, SSH 연결 시 SSH 키를 관리하는 ssh-agent가 실행중이어야 하는데~/.profile 파일을 생성하고 다음과 같이 작성하면 git bash 실행 시 ssh-agent를 함께 실행할 수 있습니다.

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

적용 후에 ssh-agent가 시작되지 않는 경우(git bash 실행 시 먹통이 되는 증상)가 있는 것 같습니다(해당 파일과 연관이 있는지는 모르겠습니다).

이 경우 Powershell에서 관리자 권한으로 다음 명령어를 실행합니다.

Set-Service ssh-agent -StartupType Manual

SSH 키 생성/등록

Github에 등록된 이메일로 SSH 키를 생성합니다.

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

생성 경로를 묻는 경우, 입력 없이 엔터를 눌러 기본 경로를 사용합니다.

키가 정상적으로 생성되면 ~/.ssh 디렉터리에 id_rsaid_rsa.pub 파일이 생성됩니다.

생성된 키를 ssh-agent에 추가합니다.

$ ssh-add ~/.ssh/id_rsa

생성된 SSH 공개키를 Github에 등록하기 위해 복사합니다.

$ clip < ~/.ssh/id_rsa.pub

Github 접속 → 우측 상단 프로필 이미지 → Settings → SSH and GPG keys → New SSH key를 선택.

적당한 키 이름을 입력하고 복사한 공개키를 입력하여 등록합니다.

GPG 키 생성/등록

$ gpg --full-generate-key

키 종류는 RSA and RSA(기본값)로 선택하고, 키 사이즈는 최소 4096비트를 사용합니다.

키의 유효 기간을 입력하는데, 기본값은 0(유효기간 없음)입니다.

키의 식별 정보를 입력할 때, 이메일은 Github에 등록된 이메일을 입력합니다.

키의 passphrase를 입력합니다.

생성이 완료되면 다음 명령어로 생성된 gpg 키를 확인합니다.

$ gpg --list-secret-keys --keyid-format LONG
sec   rsa4096/6C0A2356DF050070 2019-12-28 [SC]
      15DB9042CC2EB5B2925D61916C0A2356DF050070
uid                 [ultimate] John Doe (COMMENT) <your_email@mail.com>
ssb   rsa4096/5D8C2F207561B330 2019-12-28 [E]

위의 출력에서 rsa4096/6C0A2356DF0500706C0A2356DF050070가 키의 ID입니다.

키를 등록하기 위해 ASCII 형태로 변환합니다.

$ gpg --armor --export 6C0A2356DF050070
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBF4HHKsBEACkjYA8+CjG7iKiX0nQCmxfvR/VIzNwzE7CF7eQYMMR7bOtiN+A
bpa21SedemgEZznTO8xbbpgNLPTUgYGQHijMgCVWUxUS3bneNwOqTAVVY46/zevi
...
6dmW6Gtrfj3bMt2DNehNBEj7FoFzsQbPtIuKJxziTxAFET1Ike8STIFEKoRrGeLR
66JOyWWjQI27VBIe
=wyEQ
-----END PGP PUBLIC KEY BLOCK-----

위의 출력값을 복사합니다. clip 명령어로 복사할 수도 있습니다.

$ gpg --armor --export 6C0A2356DF050070 | clip

Github 접속 → 우측 상단 프로필 이미지 → Settings → SSH and GPG keys → New GPG key를 선택.

적당한 키 이름을 입력하고 복사한 키를 입력하여 등록합니다.

git이 커밋에 서명하도록 설정합니다.

$ git config commit.gpgsign true

모든 로컬 저장소에서 커밋 서명을 활성화하려면 --global 옵션을 추가합니다.

$ git config --global commit.gpgsign true

커밋 서명에 사용할 키 ID를 지정합니다.

$ git config user.signingkey 6C0A2356DF050070

마찬가지로 필요에 따라 전역 설정을 사용할 수 있습니다.

$ git config --global user.signingkey 6C0A2356DF050070

참고

목록으로