
이번 글은 SSH 키를 이용하여 로컬 환경에서 개발을 할 때 생겼던 (위 사진) 에러를 해결한 방법을 작성해 보려고 합니다.
에러의 원인은 아래 터미널에서 볼 수 있듯이 SSH는 보통 22번 포트를 사용하는데 계정 설정 과정에서 권한이 빠져버리는 탓에 SSH 연결이 되지 않아 git pull은 되지만 git push가 안 되는 상황이었습니다. ('ssh -T 계정'으로 ssh 연결을 확인할 수 있습니다.)

계정 문제가 해결될때까지 기다리는 방법도 있지만, 급하게 작업 내역을 반영해야 하는 상황에서 사용한 방법을 작성하고,
이왕 포스트를 작성하면서 Github의 HTTPS와 SSH의 차이점 또한 같이 알아보려고 합니다.
HTTPS vs SSH
Github를 사용하다 보면 레포를 로컬로 클론할때 SSH와 HTTPS의 옵션이 있다는 것을 확인할 수 있습니다.
두 방법의 차이점은 저장소에 Push나 Pull과 같은 동작들을 할 때, 아이디와 비밀번호로 인증 거나 SSH key를 가지고 인증하느냐의 차이입니다.
HTTPS
HTTPS는 SSL을 이용한 보안 프로토콜이며, Push나 Pull을 하려고 하는 경우에는 사용자의 Username과 Password를 사용합니다.
다만, 매번 입력할 필요 없이 Git에서 제공하는 Credential 저장소의 기능을 이용하면 계정정보를 캐싱해 두었다가 매번 입력할 필요 없이 자동으로 입력되도록 할 수 있습니다.
만약 이 방법 이외에도 Mac에서는 Keychain 시스템, Windows에서는 Windows Credential Store(자격증명 관리자)를 통해 각각 계정정보를 저장하고 활용할 수 있기 때문에 매번 로그인을 할 필요가 없습니다.
SSH
SSH는 Secure Shell을 의미하며 다른 컴퓨터에 원격으로 로그인하고 명령을 실행하는 안전한 방법을 제공합니다.
SSH 터널링을 사용하면 클라이언트와 서버간에 암호화된 연결을 생성할 수 있으며, 이를 사용하려면 사용자 이름/비밀번호 또는 암호화 공개/개인 키 세트를 사용하여 인증해야 합니다.
Github에서는 원격 저장소의 설정 화면으로 가서 SSH key를 등록해주어야 합니다.
그렇지 않고 Git에서 Push나 Pull 무작정 시도하게 되면 Permission Denied 에러 메시지를 만나게 됩니다.
SSL과 SSH의 기술적 차이점은 아래 표로 대체합니다. (첫 번째 참고 링크에 더 자세한 내용이 담겨 있습니다.)

에러 해결 방법
해결 방법은 고생한 시간에 비해 의외로 간단합니다.
우선 github 설정을 확인하기 위해 vi ~/.gitconfig 명령어를 사용해 줍니다.

파일 최하단 부분에
[url "https://github.com/"]
insteadOf = git@github.com:
를 추가해 주고 다시 push를 시도해 보면 잘 작동하는 걸 볼 수 있습니다.
참고 링크
https://kinsta.com/knowledgebase/ssh-vs-ssl/
https://gist.github.com/Kovrinic/ea5e7123ab5c97d451804ea222ecd78a
https://ricostacruz.com/posts/github-always-ssh
끝
'WEB > 기타' 카테고리의 다른 글
| [tailwind css 에러 해결] [postcss] Cannot find module @~ 에러 해결 (0) | 2025.01.13 |
|---|---|
| 구글 개발자 센터 한번에 인증받기 (제한된 개발자 계정 (0) | 2025.01.07 |
| Next.js + MongoDB 사용하기 (0) | 2023.12.27 |
| Next.js + TypeScript + Tiptap로 텍스트 에디터 만들기 (2) | 2023.12.11 |
| 가상 클래스와 가상 요소 비교 정리 (0) | 2023.09.12 |