Git Push할때 자동 인증을 위한 Public/Private key설정

git push할때마다 서버에 접근하는데요. 그때마다 서버는 인증을 요구합니다. 하지만 그때마다 비번을 입력하려면 곤혹스럽겠죠.

# git push
사용자@서버호스트's password:
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 12 threads
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 1.21 MiB | 68.73 MiB/s, done.
Total 8 (delta 0), reused 4 (delta 0), pack-reused 0 (from 0)
To 서버명:/srv/git/blockpangpang.git
   8bb10b53..daf3d064  main -> main

그래서 서버에서 Public/Private key를 생성하고 Public key는 서버에, 그리고 Private key는 로컬에 저장하여. 마치 자물쇠를 열쇠로 열듯이 자동으로 인증을 해주는 방법이 있습니다.

우선 서버에 접근에 이용할 사용자계정으로 SSH로 접속하여 ~/.ssh/authorized_keys에 Public key를 저장합니다. 주의 하실점은 키를 저장한 뒤에 엔터를 쳐서 줄바꿈을 반드시 해주셔야합니다.

그리고 로컬에서는 Private key를 ~/.ssh폴더에 저장합니다. 저는 다른 서버도 많아서 ~/.ssh/bluehost/vps_key라고 저장했습니다. 그리고 ~/.ssh/config에 서버 호스트와 사용자명, 그리고 Private key의 위치를 지정합니다.

Host my-vps
  HostName 서버호스트
  User 사용자
  IdentityFile ~/.ssh/bluehost/vps_key
  IdentitiesOnly yes

이제 Git에게 원격 저장소를 알려주어야합니다. 일단 현재 원격 저장소의 주소를 확인하는 명령어는 아래와 같습니다.

git remote -v

이제 아래 명령으로 주소를 변경합니다.

git remote set-url origin 사용자@my-vps:/srv/git/blockpangpang.git

그러면 앞으로 git push를 할때마다 비번을 입력하지 않으셔도 됩니다.

# git push
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 12 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 342 bytes | 342.00 KiB/s, done.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0 (from 0)
To my-vps:/srv/git/blockpangpang.git
   daf3d064..130d23b7  main -> main
Archived: Git