SSH 공개키(Public Key) 기반 인증¶
공개키 인증은 패스워드 접속보다 보안성이 훨씬 높으며, 실무 서버 운영에서 강력히 권장됨.
1. SSH 공개키 인증 개요¶
SSH 공개키 인증은 다음 구조로 동작함.
- 사용자 PC(클라이언트) → 개인키(private key) 보관.
- 서버 → 공개키(public key)를
authorized_keys파일에 저장. - 개인키로 서버 접속 시 공개키와 매칭되면 패스워드 없이 접속 가능.
암호 기반 접속보다 무차별 대입 공격(Brute Force) 에 훨씬 강함.
2. 클라이언트 측 SSH 키 생성¶
SSH 키 생성을 위해 클라이언트 환경에 SSH 클라이언트 도구 필요.
2.1 Windows 사전 준비¶
Windows에서는 아래 항목 중 하나만 설치되어 있으면 충분함.
방법 1) Windows 기본 OpenSSH Client (권장)¶
Windows 10/11에는 기본적으로 OpenSSH Client 포함됨.
아래 명령으로 설치 여부 확인.
ssh -V
명령을 인식하지 못하는 경우 다음 경로에서 설치.
설정 → 앱 → 선택적 기능 → OpenSSH Client → 설치
설치 후 PowerShell 재실행.
방법 2) Git for Windows¶
Git Bash 환경을 사용하는 경우 Git 설치 시 SSH 도구 포함됨.
다운로드 경로:
https://git-scm.com/
설치 후 Git Bash에서 ssh-keygen 사용 가능.
2.2 Linux / macOS 사전 준비¶
대부분의 Linux 및 macOS에는 OpenSSH 기본 설치됨.
아래 명령으로 설치 여부 확인.
ssh -V
미설치 시 아래 명령으로 설치.
Rocky / RHEL / CentOS¶
sudo dnf install openssh-clients -y
Ubuntu / Debian¶
sudo apt install openssh-client -y
macOS (Homebrew 사용 시)¶
brew install openssh
2.3 SSH 키 생성¶
Windows (PowerShell / Git Bash)¶
ssh-keygen -t rsa -b 4096 -C "[User]"
여러 질문 출력되며 기본 엔터로 진행.
생성된 파일 위치 예시는 다음과 같음.
C:\Users\[User]\.ssh\id_rsa (개인키)
C:\Users\[User]\.ssh\id_rsa.pub (공개키)
Linux / macOS¶
ssh-keygen -t rsa -b 4096 -C "[User]"
생성된 파일 위치는 다음과 같음.
/home/[User]/.ssh/id_rsa
/home/[User]/.ssh/id_rsa.pub
⚠️ warning "개인키 보안 주의"
id_rsa 파일은 절대 외부에 공유하거나 서버로 업로드하면 안 됨.
개인키 유출 시 서버 전체 침해 가능.
3. 서버에 공개키 등록 (authorized_keys)¶
서버에서 .ssh 디렉토리 생성 및 권한 설정.
sudo mkdir -p /home/[User]/.ssh
sudo chown -R [User]:[Group] /home/[User]/.ssh
sudo chmod 700 /home/[User]/.ssh
공개키 등록¶
클라이언트에서 다음 명령으로 공개키 복사.
ssh-copy-id [User]@[ServerIP]
ssh-copy-id 미사용 환경에서는 다음 절차로 직접 추가.
-
클라이언트에서 공개키 내용 확인.
cat ~/.ssh/id_rsa.pub -
서버에서
authorized_keys파일 생성.echo "[공개키 내용]" >> /home/[User]/.ssh/authorized_keys -
권한 설정.
sudo chown [User]:[User] /home/[User]/.ssh/authorized_keys sudo chmod 600 /home/[User]/.ssh/authorized_keys
4. SSH 데몬 설정(sshd_config) 수정¶
공개키 인증 허용 설정 확인.
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
패스워드 접속 비활성화 설정(강력 권장).
PasswordAuthentication no
설정 파일 위치:
/etc/ssh/sshd_config
5. SSH 서비스 재시작¶
설정 적용.
sudo systemctl restart sshd
sudo systemctl status sshd
6. 공개키 접속 테스트¶
클라이언트에서 다음 명령 실행.
ssh [User]@[ServerIP]
정상 설정 시 패스워드 입력 없이 접속됨.