1. 시험환경 (Environment)
◎ OS: Ubuntu (v.22.04)
◎ Platform: GitHub
◎ Tool: ssh-keygen
2. 문제 인식 (Problem)
◎ 완성된 프로젝트를 실제 서비스하기 위해 AWS EC2나 온프레미스 우분투(Ubuntu) 서버에 접속하고, 이곳에 GitHub 코드를 다운로드(git pull) 받으려면 권한 인증이 필요하다.
◎ 이때 윈도우 로컬 PC에서 하던 것처럼 우분투 서버 터미널에 내 '개인 GitHub 계정(ID/PW 또는 Personal Access Token)'을 직접 입력하여 로그인하는 것은 보안상 매우 위험한 행동이다.
3. 원인 분석 (Cause)
◎ 이러한 문제가 발생하는 원인은 서버 환경과 로컬 환경의 성격이 다르기 때문이다. 로컬 PC는 '나 혼자' 쓰는 공간이지만, 배포 서버는 여러 개발자가 함께 접속하는 '공용 공간'이기 때문이다.
◎ 공용 서버가 만약 해킹이라도 당한다면 서버에 연동된 내 개인 계정의 모든 프라이빗 저장소(Repository) 코드까지 전부 유출되는 2차 피해가 발생할 수 있다.
◎ 따라서 배포 서버에는 내 전체 계정 권한을 주는 것이 아니라, '현재 서비스할 딱 하나의 저장소(Repository)'에만 접근할 수 있는 서버 전용 열쇠(독립된 권한)를 발급해주어야 한다.
4. 해결방법 (Solution)
1) 서버에서 SSH 키 쌍(비밀키-공개키) 생성
① 우분투 터미널을 열고 키를 보관할 폴더에서 ssh-keygen 명령어를 실행한다.
ssh-keygen -t ed25519 -a 100 -f [key명]
- ed25519는 기존 RSA 방식보다 성능과 보안이 뛰어난 최신 알고리즘이다.
- 명령어 실행 후 비밀번호(passphrase)를 묻는 프롬프트가 나오면, 자동 배포를 위해 엔터를 두 번 눌러 생략한다.
- 생성이 완료되면 비밀키 파일과 공개키(.pub) 파일 2개가 생성된다.

2) 웹 브라우저 GitHub에서 설정
① 권한을 부여할 대상인 GitHub 프로젝트 저장소로 이동한 뒤, 상단 탭의 Settings 메뉴를 클릭한다.

② 좌측 사이드바 메뉴에서 Deploy keys를 클릭하고, 우측 상단의 Add deploy key 버튼을 클릭한다.
![]() |
![]() |
③ 우분투에서 생성한 2개의 파일 중 반드시 공개키(.pub 확장자)의 내용을 cat 명령어로 출력하여 전체 복사한다.
# 명령어(서버에서 실행)
cat [SSH_key명].pub
- 복사한 ssh-ed25519로 시작하는 긴 텍스트를 GitHub의 Key 입력란에 그대로 붙여넣는다.
- Title에 'Ubuntu-Production-Server'처럼 알아보기 쉬운 이름을 적고 Add key를 눌러 저장한다.

5. 요약 및 마무리 (Summary)
◎ 설정이 완료되면 우분투 서버는 내 개인 계정 로그인 없이도 SSH 주소를 통해 해당 저장소의 코드를 Pull 받을 수 있다.
◎ 이처럼 Deploy Key(배포 키)를 활용하면 서버에 개인 계정을 노출하지 않으면서도 특정 Repository를 안전하게 연결할 수 있다. 이는 실무에서 CI/CD(지속적 통합/배포) 자동화 파이프라인을 구축할 때 반드시 거쳐야 하는 필수 보안 세팅이다.

'형상관리 및 패키지' 카테고리의 다른 글
| [Git][명령어] 단일 브랜치 Clone으로 원하는 브랜치만 골라 받기 (0) | 2026.10.15 |
|---|---|
| [Git][명령어] Clone 후 파일 덮어쓰기로 진행 중인 프로젝트를 GitHub에 등록하는 또 다른 방법 (1) | 2026.10.15 |
| [Git][명령어] "빈 프로젝트" 및 "진행 중 프로젝트"를 GitHub 새 저장소에 연결하기 (0) | 2026.10.15 |
| [Git][명령어] Git 캐시 삭제 명령어로 .gitignore 동작하게 하기 (0) | 2026.10.15 |
| [Git][설정] 윈도우 자격 증명 초기화로 "Repository not found" 에러 해결 (0) | 2026.10.15 |









