[Linux] ssh-keygen으로 SSH 키 인증 로그인 설정

SSH를 사용할 때 매번 비밀번호를 입력하는 것이 번거롭고, 보안상으로도 위험할 수 있습니다.
이럴 때 유용한 방법이 바로 공개키 기반 로그인입니다.

 


1. SSH 키 인증이란?

SSH 키 인증은 비밀번호 대신 공개키/개인키를 사용해서 서버에 접속하는 방식입니다.
개인키는 본인만 가지고 있고, 공개키는 서버에 등록해둡니다.
이 방식은 무차별 대입 공격에 강하고, 자동화 작업에도 적합합니다.

 

2. 클라이언트에서 SSH 키 생성하기

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

위 명령어를 입력하면 다음과 같은 절차가 진행됩니다:

  1. 키를 저장할 경로를 묻습니다 (기본값: ~/.ssh/id_rsa)
  2. 비밀번호(passphrase)를 설정할 수 있습니다 (옵션)

생성된 파일:

  • id_rsa – 개인키 (절대 유출되지 않도록 보관)
  • id_rsa.pub – 공개키 (서버에 등록)

 

3. 공개키를 서버에 등록하기

- 방법 1: ssh-copy-id 사용 (추천)

ssh-copy-id username@server-ip

간단하게 공개키를 서버의 ~/.ssh/authorized_keys에 복사해줍니다.

- 방법 2: 수동으로 등록하기

cat ~/.ssh/id_rsa.pub

출력된 내용을 서버의 ~/.ssh/authorized_keys 파일에 추가합니다.

 

4. 서버의 SSH 설정 확인

/etc/ssh/sshd_config 파일을 수정합니다.

sudo nano /etc/ssh/sshd_config

다음 항목이 아래와 같이 설정되어 있는지 확인하세요:

PubkeyAuthentication yes
PasswordAuthentication no

이후 SSH 서비스를 재시작합니다:

sudo systemctl restart ssh

 

5. 로그인 테스트

클라이언트에서 서버로 SSH 접속을 시도합니다:

ssh username@server-ip

정상적으로 키 인증이 설정되었다면 비밀번호 입력 없이 바로 접속됩니다.
만약 Permission denied 오류가 발생하면 퍼미션이나 키 경로를 다시 확인해보세요.

 

6. 보안 권장 사항

  • 개인키는 600 권한으로 설정 (chmod 600 ~/.ssh/id_rsa)
  • ~/.ssh 디렉토리는 700 권한으로 설정
  • 가능하면 루트 계정이 아닌 일반 사용자 계정으로 로그인한 뒤 sudo를 사용하는 것이 좋습니다.

 

SSH 키 인증은 보안과 편의성을 모두 잡는 방법

ssh-keygen을 통해 생성한 키로 로그인하면
비밀번호 없이도 안전하게 서버에 접속할 수 있고, 자동화 작업에도 유리합니다.