GitLab Runner 서버에서 SSH 공개키를 이용해 원격 서버에 비밀번호 없이 접속하는 방법을 설명합니다. ssh-copy-id 사용법부터 GitLab CI/CD 자동 배포 설정까지 실무 예제를 포함해 정리했습니다.

GitLab Runner SSH 비밀번호 없이 원격 서버 자동 배포 설정하기
GitLab CI/CD를 이용하여 서버 자동 배포를 구성할 때 가장 먼저 해결해야 하는 문제가 SSH 비밀번호 입력입니다. 배포 파이프라인은 사람이 직접 로그인하는 환경이 아니기 때문에 비밀번호 입력 없이 서버에 접속할 수 있어야 합니다.
이번 글에서는 GitLab Runner 서버에서 SSH 공개키를 등록하여 원격 서버에 무비밀번호 접속을 설정하는 방법을 설명합니다.
왜 SSH 비밀번호 없이 접속해야 할까?
일반적인 SSH 접속은 다음과 같이 비밀번호를 요구합니다.
ssh deployuser@xxx.xxx.xxx.xxx
하지만 GitLab Runner는 자동으로 스크립트를 실행하기 때문에 중간에 비밀번호를 입력할 수 없습니다.
따라서 다음과 같은 방식으로 SSH Key 인증을 사용해야 합니다.
GitLab Runner
↓
SSH Key 인증
↓
원격 서버
이렇게 구성하면 배포 시 비밀번호 입력 없이 자동으로 접속할 수 있습니다.
현재 SSH 키 확인하기
먼저 GitLab Runner 서버에 SSH 키가 존재하는지 확인합니다.
ll ~/.ssh/
예시 결과
id_rsa
id_rsa.pub
known_hosts
여기서 중요한 파일은 다음과 같습니다.
| id_rsa | 개인키(Private Key) |
| id_rsa.pub | 공개키(Public Key) |
| known_hosts | 접속한 서버 정보 |
특히 공개키인 id_rsa.pub 파일을 원격 서버에 등록해야 합니다.
SSH 공개키 등록하기
GitLab Runner 서버에서 아래 명령어를 실행합니다.
ssh-copy-id -i ~/.ssh/id_rsa.pub deployuser@xxx.xxx.xxx.xxx
예시
ssh-copy-id -i ~/.ssh/id_rsa.pub deployuser@xxx.xxx.xxx.xxx
이 명령은 현재 서버의 공개키를 원격 서버의 authorized_keys 파일에 자동 등록해 줍니다.
처음 접속 시 Host 인증
처음 연결하는 서버라면 아래 메시지가 출력될 수 있습니다.
The authenticity of host 'xxx.xxx.xxx.xxx' can't be established.
Are you sure you want to continue connecting (yes/no)?
다음과 같이 입력합니다.
yes
그러면 해당 서버 정보가 known_hosts 파일에 저장됩니다.
최초 1회 비밀번호 입력
공개키를 등록하는 과정에서는 원격 서버 계정 비밀번호를 한 번 입력해야 합니다.
deployuser@xxx.xxx.xxx.xxx's password:
원격 서버 계정 비밀번호를 입력합니다.
이 과정은 공개키 등록 시에만 필요합니다.
공개키 등록 성공 확인
정상적으로 등록되면 다음과 같은 메시지가 출력됩니다.
Number of key(s) added: 1
Now try logging into the machine, with:
"ssh 'deployuser@xxx.xxx.xxx.xxx'"
이 메시지가 보이면 공개키 등록이 완료된 상태입니다.
SSH 접속 테스트
다시 접속을 시도합니다.
ssh deployuser@xxx.xxx.xxx.xxx
정상이라면 비밀번호를 묻지 않고 바로 로그인됩니다.
Last login: ...
[deployuser@server ~]$
이 상태가 되면 GitLab Runner 자동 배포를 위한 SSH 설정이 완료된 것입니다.
GitLab CI/CD 자동 배포 적용하기
이제 GitLab Runner에서 원격 서버에 비밀번호 없이 접속할 수 있으므로 .gitlab-ci.yml에 배포 명령을 추가할 수 있습니다.
deploy-to-main-server:
stage: deploy
only:
- main
script:
- pwd
# 로컬 서버 배포
- ssh localuser@localhost "
cd /home/localuser/project &&
git checkout main &&
git pull origin main
"
# 원격 서버 배포
- ssh deployuser@xxx.xxx.xxx.xxx "
cd /home/deployuser/project &&
git checkout main &&
git pull origin main
"
tags:
- deploy
GitLab에서 Main 브랜치에 Push가 발생하면 Runner가 자동으로 접속하여 최신 소스를 배포하게 됩니다.
SSH 접속이 안 될 때 확인할 사항
authorized_keys 권한 확인
원격 서버에서 확인합니다.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
SSH 서비스 실행 여부 확인
systemctl status sshd
또는
systemctl status ssh
공개키 등록 확인
cat ~/.ssh/authorized_keys
등록한 공개키가 포함되어 있는지 확인합니다.
실무 팁
실제 운영 환경에서는 다음 방식을 권장합니다.
개인키 암호 설정
보안을 위해 개인키에 암호를 설정할 수 있습니다.
ssh-keygen -p
배포 전 테스트 명령 추가
script:
- ssh deployuser@xxx.xxx.xxx.xxx "hostname"
배포 전에 접속 가능 여부를 먼저 검증할 수 있습니다.
여러 서버 동시 배포
script:
- ssh web1@xxx.xxx.xxx.xxx "deploy script"
- ssh web2@xxx.xxx.xxx.xxx "deploy script"
- ssh web3@xxx.xxx.xxx.xxx "deploy script"
운영 서버가 여러 대일 경우 동일한 방식으로 확장 가능합니다.
FAQ
SSH 키를 새로 생성해야 하나요?
아닙니다.
이미 아래 파일이 존재한다면 그대로 사용하면 됩니다.
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
ssh-copy-id 명령이 없으면 어떻게 하나요?
직접 공개키를 복사하여 등록할 수 있습니다.
cat ~/.ssh/id_rsa.pub
출력된 내용을 원격 서버의
~/.ssh/authorized_keys
파일에 추가하면 됩니다.
GitLab Runner에서만 사용할 수 있나요?
아닙니다.
Jenkins, Github Actions Self-hosted Runner, Drone CI, TeamCity 등 SSH 기반 자동 배포가 필요한 모든 환경에서 동일하게 사용할 수 있습니다.
마무리
GitLab Runner에서 원격 서버로 자동 배포를 구성하려면 SSH 공개키 인증 설정이 필수입니다. 이미 서버에 id_rsa와 id_rsa.pub가 존재한다면 새로 키를 생성할 필요 없이 ssh-copy-id 명령만 실행하면 됩니다.
공개키 등록이 완료된 후 ssh deployuser@xxx.xxx.xxx.xxx 명령이 비밀번호 없이 실행된다면 GitLab CI/CD 자동 배포 환경 구성이 성공적으로 완료된 것입니다.
'서버 & 인프라' 카테고리의 다른 글
| DDNS란 무엇인가? 유동 IP 환경에서 꼭 필요한 이유와 활용 방법 (0) | 2026.06.04 |
|---|---|
| ipTIME 포트포워딩 설정 방법 (Ubuntu 서버 GitLab, Nexus, Apache 외부 접속하기) (0) | 2026.06.03 |
| 게이트웨이(Gateway)란 무엇인가? 인터넷이 연결되는 원리 쉽게 이해하기 (0) | 2026.06.02 |
| Ubuntu 22.04 Nexus 3.92 systemd 서비스 등록 및 자동 실행 설정 방법 (0) | 2026.06.02 |
| Ubuntu 22.04 UFW 방화벽 설정 가이드 (GitLab, Nexus, Apache, MySQL, vLLM 운영 서버) (0) | 2026.06.02 |
