Git 리모트가 HTTPS 로 구성되었는지 확인하는 방법

GitBeginner
지금 연습하기

소개

이 랩에서는 Git 리모트가 HTTPS 프로토콜을 사용하도록 구성되었는지 확인하는 방법을 배우게 됩니다. git remote -v 명령을 사용하여 리모트 URL 을 확인하고, 특히 URL 스키마를 검증할 것입니다.

실제 단계를 통해 테스트 저장소를 생성하고, HTTPS 리모트를 추가한 다음, git remote -v를 사용하여 구성을 확인할 것입니다. 이 랩은 로컬 저장소가 원하는 프로토콜을 사용하여 올바른 리모트 위치에 연결되어 있는지 확인하고, HTTPS 와 SSH 리모트 구성의 차이점을 이해하는 데 필요한 지식을 제공합니다.

git remote -v 로 HTTPS 확인

이 단계에서는 Git 저장소의 리모트 URL 을 확인하는 방법을 살펴보고, 특히 HTTPS 프로토콜에 중점을 둡니다. 리모트 URL 을 이해하는 것은 매우 중요합니다. 이는 로컬 Git 저장소에 코드 가져오기 위치와 변경 사항을 푸시할 위치를 알려주기 때문입니다.

먼저, 작업할 간단한 Git 저장소를 생성해 보겠습니다. 프로젝트 디렉토리로 이동하여 새 Git 저장소를 초기화합니다.

cd ~/project
mkdir my-remote-test
cd my-remote-test
git init

이제 리모트 URL 을 추가해 보겠습니다. 데모 목적으로 자리 표시자 URL 을 사용합니다. 실제 시나리오에서는 GitHub, GitLab 또는 Bitbucket 과 같은 플랫폼의 저장소 URL 이 됩니다.

git remote add origin https://github.com/user/repo.git

이 명령은 지정된 HTTPS URL 을 사용하여 origin이라는 리모트를 추가합니다. origin은 기본 리모트 저장소에 대한 일반적인 이름입니다.

이제 리모트 URL 을 확인하기 위해 git remote -v 명령을 사용합니다. -v 플래그는 "verbose"를 의미하며, 가져오기 (fetch) 및 푸시 (push) 모두에 대한 URL 을 표시합니다.

git remote -v

다음과 유사한 출력을 볼 수 있습니다.

origin  https://github.com/user/repo.git (fetch)
origin  https://github.com/user/repo.git (push)

이 출력은 저장소에 가져오기 및 푸시 모두에 HTTPS 프로토콜을 사용하도록 구성된 origin이라는 리모트가 있음을 확인합니다. (fetch)는 리모트에서 변경 사항을 풀 (pull) 하거나 가져올 (fetch) 때 사용되는 URL 을 나타내고, (push)는 로컬 변경 사항을 리모트에 푸시할 때 사용되는 URL 을 나타냅니다.

리모트에 HTTPS 를 사용하는 것은 일반적이며, 특히 공개 저장소 또는 사용자 이름과 비밀번호 또는 개인 액세스 토큰으로 인증할 때 그렇습니다. 로컬 저장소가 원하는 프로토콜을 사용하여 올바른 리모트 위치에 연결되어 있는지 확인하기 위해 이 구성을 확인하는 방법을 아는 것이 중요합니다.

URL 스키마 확인

이 단계에서는 리모트 URL 이 HTTPS 스키마를 사용하고 있는지 구체적으로 확인합니다. git remote -v는 전체 URL 을 표시하지만, 때로는 프로그래밍 방식으로 확인하거나 사용 중인 프로토콜을 간단히 확인해야 할 수 있습니다.

git remote -v의 출력을 grep으로 파이프하고 "https" 문자열을 검색하여 이를 수행할 수 있습니다.

먼저, my-remote-test 디렉토리에 있는지 확인합니다.

cd ~/project/my-remote-test

이제 git remote -v 명령을 실행하고 출력을 grep으로 파이프합니다.

git remote -v | grep "https"

origin에 대한 리모트 URL 이 실제로 HTTPS 를 사용하고 있다면 다음과 유사한 출력을 볼 수 있습니다.

origin  https://github.com/user/repo.git (fetch)
origin  https://github.com/user/repo.git (push)

출력이 비어 있다면, 리모트 origin이 HTTPS URL 로 구성되지 않은 것입니다.

URL 스키마 (예: https:// 또는 git@) 를 이해하는 것은 Git 이 리모트 서버와 어떻게 인증할지 결정하기 때문에 중요합니다. HTTPS 는 일반적으로 사용자 이름/비밀번호 또는 토큰을 사용하고, SSH 는 SSH 키를 사용합니다. 어떤 스키마가 구성되어 있는지 알면 연결 문제를 해결하거나 사용 중인 보안 방법을 이해하는 데 도움이 됩니다.

이 간단한 확인은 전체 URL 을 수동으로 구문 분석할 필요 없이 프로토콜을 빠르게 확인할 수 있는 방법입니다.

SSH vs HTTPS 테스트

이 단계에서는 리모트 Git 저장소와 상호 작용하기 위해 HTTPS 및 SSH 프로토콜을 사용하는 것의 차이점을 살펴봅니다. 둘 다 코드를 가져오고 푸시할 수 있지만, 서로 다른 인증 방법을 사용합니다.

우리는 이미 origin 리모트를 HTTPS 를 사용하도록 구성했습니다. 두 프로토콜을 사용하여 저장소를 복제하여 URL 형식의 차이점을 살펴보겠습니다.

먼저, ~/project 디렉토리로 다시 이동합니다.

cd ~/project

이제 HTTPS 를 사용하여 저장소를 복제하는 것을 시뮬레이션해 보겠습니다. 복제를 위해 인증이 필요하지 않은 공개 저장소 URL 을 사용합니다.

git clone https://github.com/git/git.git git-https-test

이 명령은 공식 Git 저장소를 git-https-test라는 새 디렉토리로 복제합니다. 복제 프로세스를 나타내는 출력을 볼 수 있습니다. 공개 저장소를 HTTPS 를 통해 복제하는 것은 일반적으로 자격 증명이 필요하지 않기 때문에 작동합니다.

이제 SSH 프로토콜을 사용하여 동일한 저장소를 복제하는 것을 시뮬레이션해 보겠습니다. SSH URL 형식은 다르며, 일반적으로 git@hostname:user/repo.git와 같습니다.

git clone git@github.com:git/git.git git-ssh-test

이 명령을 실행하면 호스트의 진위 여부에 대한 메시지 또는 권한 거부 오류가 표시될 수 있습니다. 이는 SSH 를 통한 복제는 SSH 키를 사용하여 인증이 필요하기 때문입니다. 이 환경에서 SSH 키를 설정하지 않았으므로 연결이 실패하거나 자격 증명을 묻는 메시지가 표시됩니다.

Cloning into 'git-ssh-test'...
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6qU/mzgpTw4mSjJA9PMpTkCXPzQ7lPkLiA.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

no를 입력하고 Enter 키를 눌러 연결 시도를 거부할 수 있습니다.

이는 주요 차이점을 보여줍니다. HTTPS 는 공개 액세스 (예: 복제) 에 종종 더 간단하며, SSH 는 SSH 키가 설정되면 인증된 액세스 (예: 변경 사항 푸시) 를 위한 보다 안전하고 편리한 방법을 제공합니다.

이제 테스트 디렉토리를 제거할 수 있습니다.

rm -rf git-https-test git-ssh-test

Git 워크플로우를 관리하고 저장소에 대한 안전한 액세스를 보장하려면 HTTPS 와 SSH 를 언제 사용해야 하는지 이해하는 것이 중요합니다.

요약

이 랩에서는 Git 리모트가 HTTPS 프로토콜로 구성되어 있는지 확인하는 방법을 배웠습니다. 새로운 Git 저장소를 초기화하고 HTTPS URL 을 사용하여 리모트를 추가하는 것으로 시작했습니다. 리모트 URL 과 해당 프로토콜을 확인하는 데 사용된 핵심 명령은 git remote -v였으며, 이는 구성된 각 리모트에 대한 fetch 및 push URL 을 표시합니다.

git remote -v의 출력이 URL 스키마를 명확하게 보여주어 HTTPS 가 사용되고 있는지 식별할 수 있음을 확인했습니다. 이 프로세스는 로컬 저장소가 리모트 상대방과 어떻게 상호 작용하는지 이해하고 원하는 연결 프로토콜이 제대로 설정되었는지 확인하는 데 필수적입니다.