HTTPS vs SSH

2026. 3. 6. 12:02·개발 공통 기술

깃허브(GitHub)에서 레포지토리를 처음 만들면 마주하게 되는 HTTPS와 SSH 선택지는 보안과 편의성 사이의 '취향 차이'라고 볼 수 있습니다. 결론부터 말씀드리면, 작동하는 결과는 같지만 문을 여는 열쇠의 종류가 다릅니다.

 

HTTPS 방식은 매번 ID/PW(또는 Personal Access Token)를 입력해야 하거나 캐싱 처리가 번거롭지만, SSH는 '열쇠(Key)'를 미리 등록해두는 방식이라 자동화 환경에서 훨씬 안전하고 매끄럽거든요.

 

 

일단 보통 2가지 방식이 어떻게 사용되는지 한번 보자.

 

1. 왜 두 가지 방식을 모두 제공할까?

사용자의 환경과 보안 요구 수준이 제각각이기 때문입니다.

HTTPS를 선택하는 이유

  • 간편함 : 초보자가 쓰기에 최고!! 별도의 설정 없이 URL만 복사해서 git clone을 하면 바로 시작가능.
  • 환경 호환성 : 학교나 회사처럼 네트워크 보안이 엄격한 곳에서는 SSH 포트가 막혀있는 경우가 많습니다. HTTPS는 일반 웹 트래픽과 같은 포트를 사용하므로 어디서든 잘 됩니다.
  • 일시적 사용 : 남의 컴퓨터에서 잠깐 작업할 때 키를 생성하고 등록하기 번거로우므로 HTTPS가 유리합니다.

SSH를 선택하는 이유

  • 자동 로그인 : 한 번 키를 등록해두면 매번 아이디/비밀번호(혹은 토큰)를 입력하거나 저장할 필요가 없습니다.
  • 보안 강화 : 내 PC의 '물리적인 키 파일'이 없으면 접근이 불가능. 계정 정보가 털리더라도 비교적 안전.
  • 서버 관리자 선호 : 개발자들은 이미 서버 접속을 위해 SSH 키를 사용하는 경우가 많아 관리가 익숙합니다.

 

 

2. HTTPS vs SSH: 핵심 차이점

구분 HTTPS (Hypertext Transfer Protocol Secure) SSH (Secure Shell)
인증 방식 GitHub 계정 비밀번호 또는 PAT(Personal Access Token) 내 컴퓨터의 **비공개 키(Private Key)**와 GitHub의 공개 키(Public Key) 쌍
편의성 별도 설정 없이 즉시 사용 가능 초기 SSH 키 생성 및 등록 과정이 필요함
보안성 토큰이 노출될 경우 위험함. 키 쌍(Pair) 기반이라 상대적으로 더 강력함. 개인키가 로컬에만 존재.
환경 제한 방화벽이나 프록시 환경에서도 잘 작동함 일부 기업용 방화벽에서 포트(22)를 차단할 수 있음
초기 설정 거의 없음 키 생성 및 GitHub 등록 필요
매번 인증 credential 캐싱 필요 한 번 설정 후 자동
포트 443 (방화벽 통과 용이) 22 (일부 네트워크에서 차단됨)
사용 편의성 초보자 친화적 설정 후 더 편리

 

 

3. HTTPS vs SSH — GitHub 연결 방식 차이

인증 방식의 본질적 차이

  • HTTPS
    • URL 기반 인증. https://github.com/user/repo.git 형태로, push/pull 시마다 GitHub 계정 자격증명(username + PAT)으로 인증한다.
  • SSH
    • 키 페어 기반 인증이다. git@github.com:user/repo.git 형태로, 로컬에 생성한 개인키(private key)와 GitHub에 등록한 공개키(public key)가 매칭되어 인증한다.

 

 

HTTPS 방식의 핵심 원리: 사용자 인증

SSH가 "열쇠"를 미리 복사해두는 방식이라면, HTTPS는 "신분증(ID/PW)"을 매번 제시하거나 임시 통행증(Token)을 보여주는 방식에 가깝습니다.

HTTPS를 통해 GitHub에 접근할 때는 우리가 웹사이트에 로그인하는 것과 비슷한 과정을 거칩니다.

  • 인증 수단: 예전에는 실제 GitHub 계정 비밀번호를 썼지만, 보안상 현재는 **PAT(Personal Access Token)**라는 복잡한 문자열을 신분증 대신 사용합니다.
  • 전달 방식: Git 클라이언트가 요청을 보낼 때마다 HTTP 헤더에 이 토큰 정보를 실어서 보냅니다.

인증 로직:

  1. 내 컴퓨터가 GitHub 주소(https://github.com/...)로 데이터를 보내려고 시도합니다.
  2. GitHub 서버가 "누구니? 신분증(Token) 내놔"라고 요청합니다.
  3. 사용자가 입력한(혹은 저장된) 토큰을 서버로 보냅니다.
  4. GitHub이 자기네 데이터베이스에 있는 토큰과 일치하는지 확인하고 문을 열어줍니다.

 

SSH 방식의 핵심: "열쇠와 자물쇠" (Public/Private Key)

HTTPS는 매번 계정 아이디와 패스워드(또는 토큰)를 입력해야 하지만, SSH는 **암호학적인 '쌍'**을 이용해 자동으로 인증합니다.

  • Private Key (개인키): 본인의 컴퓨터(또는 GitHub Actions 서버)에만 보관하는 절대 유출되면 안 되는 열쇠입니다.
  • Public Key (공개키): GitHub 설정에 등록해두는 '자물쇠'입니다.

인증 로직:

  1. 내 컴퓨터가 GitHub에 접속을 시도합니다.
  2. GitHub이 "너 진짜 너 맞아? 이 자물쇠(공개키)에 맞는 열쇠(비밀키)로 증명해봐"라고 요청합니다.
  3. 내 컴퓨터가 비밀키를 이용해 응답을 암호화해서 보냅니다.
  4. GitHub이 가지고 있는 공개키로 이를 해독하여 신원을 확인합니다.

 

'개발 공통 기술' 카테고리의 다른 글

JWT  (2) 2024.11.04
이미지 파일에 대한 이해  (4) 2024.10.23
직렬화(Serializable)란 무엇인가?  (0) 2023.01.15
JWT 는 만능이 아니다.  (0) 2022.12.12
'개발 공통 기술' 카테고리의 다른 글
  • JWT
  • 이미지 파일에 대한 이해
  • 직렬화(Serializable)란 무엇인가?
  • JWT 는 만능이 아니다.
정총무
정총무
개발과 투자의 귀재
  • 정총무
    Take a Chance
    정총무
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • 블로깅 리스트 (1)
      • 안드로이드 (8)
        • 코루틴 (0)
        • Kotlin (6)
        • 디자인패턴 (2)
      • Flutter (22)
        • Flutter 개발 생산성 극대화 (1)
        • Dart (7)
        • Skills (9)
        • Flutter 로 Android 앱 출시 (2)
        • Flutter 로 IOS 앱 출시 (0)
      • IOS (0)
      • Node.js (1)
      • 개발 공통 기술 (5)
      • 가끔 끄적임 (4)
      • 알고리즘 (2)
      • 자료구조 (8)
      • 맛집 (1)
      • 웹개발 (3)
        • 타입스크립트 (1)
        • 자바스크립트 (2)
      • Conference (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    pagination
    DART
    2026
    다형성
    코틀린
    제네릭
    앱 출시
    사이드 프로젝트
    Flutter
    비즈까페
    토이 프로젝트
    Throttle
    WebP
    debounce
    github
    primitive type
    Flutter Korea
    mixin
    Flutter Allience
    gorouter
    playstore
    안드로이드 개발
    코드 간소화
    android
    맛집 탐방
    https
    인스타그램
    기본자료형
    흑백요리사
    svg
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
정총무
HTTPS vs SSH
상단으로

티스토리툴바