콘텐츠로 이동

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 미사용 환경에서는 다음 절차로 직접 추가.

  1. 클라이언트에서 공개키 내용 확인.

    cat ~/.ssh/id_rsa.pub
    

  2. 서버에서 authorized_keys 파일 생성.

    echo "[공개키 내용]" >> /home/[User]/.ssh/authorized_keys
    

  3. 권한 설정.

    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]

정상 설정 시 패스워드 입력 없이 접속됨.