본문 바로가기
Git

[Git] SSH Key로 Push하기

by thoonk: 2021. 7. 28.

원격 저장소에 ssh key를 사용해서 푸시하는 방법에 관해 기록합니다.

Mac OS를 기준으로 설명합니다.

위와 같이 Github에서는 오는 8월 13일부터 패스워드를 통해 Git에 인증하는 방식을 더이상 지원하지 않고 token을 기반으로 한 인증을 사용한다고 합니다. 그래서 ssh key를 통해 인증하여 서버에 푸시할 수 있는 방법을 소개합니다.

 

1. SSH Key 생성하기

먼저 Terminal 또는 iTerm을 켜서 깃 저장소에 따라 아래의 명령어를  입력하여 ssh key를 생성한다. 

$ ssh-keygen -t rsa // bitbucket
$ ssh-keygen -t ed25519 -C "your_email@example.com" // github

 

위 명령어를 입력하고 나면 아래와 같은 출력이 나오고 key를 저장할 경로 및 key의 이름을 입력하라고 한다.

> Enter a file in which to save the key (/Users/you/.ssh/id_ed25519): [Press enter]
// 파일 이름을 변경할 것이라면 /Users/you/.ssh/thoonk-github

 

파일 경로 및 이름을 입력하고 나면 아래 처럼 key의 비밀번호를 입력하라고 나온다.

이 비밀번호를 통해 key를 사용할 수 있고 귀찮다면 그냥 엔터를 입력하자.

> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

 

그 후에 위 파일의 경로로 가보면 public key와 private key가 생성된 것을 볼 수 있다. 

마지막으로 아래와 같은 코드를 입력하여 github에 등록할 public key를 복사한다.

cat ~/.ssh/bitbucket_add_ssh.pub | pbcopy

 

2. 저장소에 Public Key 등록하기

1) Github

github의 settings -> SSH and GPG keys -> New SSH key 

제목은 원하는데로 넣고 key 부분에 복사한 것을 붙여 넣는다.

 

기존에 https로 git clone 했던 레파지토리는 ssh용으로 다시 해야하는 것으로 알고 있다. (확실하지 않음)

HTTPS 대신 SSH를 눌러 복사하여 git clone을 한다.

이게 다 끝나고 새로운 커밋이 있다면 SSH Key를 이용해서 푸시를 해보자 !

 

2) Bitbucket

bitbucket은 ssh key 발급하는 과정은 위와 같고 해당 사이트에서 마찬가지로 key를 등록해주면 된다.

 

3. Permission denied 오류 발생하는 경우

1) public key가 원격 저장소에 등록되지 않은 경우 - 원격 저장소에 public key 등록

2) 로컬 기기의 Private key를 관리하는 SSH Agent가 로드된 identity file(private key)를 가지고 있지 않은 경우 

 

$ ps -e | grep ssh-agent 명령어로 ssh-agent가 켜져 있는지 확인

 

$ ssh-agent /bin/bash

 

$ ssh-add ~/.ssh/private-key-name

 

$ ssh-add -l

    - 키의 fingerprint가 출력되는 것을 확인

    - 위와 같이 등록이 안 되어 있으면 다시 등록

 

4. 소스트리

설정의 계정탭에서 SSH 키를 생성을 누르면 자동으로 생성되며

해당 원격 저장소에 따라 사이트에서 public key를 등록해주면 된다.

 

부족한 내용이 있다면 피드백해주시면 감사합니다👍

 

참고: 

https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/

https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

댓글