본문 바로가기
카테고리 없음

SSH 키 생성과 서버 접속 보안 강화 가이드

by 서버의달인 2025. 4. 18.

리눅스 서버를 운영한다면 가장 먼저 신경 써야 할 부분이 SSH 접속 보안입니다. 기본적인 비밀번호 인증 방식은 무차별 대입 공격(Brute Force)에 취약하기 때문에, SSH 키 인증 방식을 사용하는 것이 권장됩니다. 이 글에서는 SSH 키를 생성하고, 서버에 적용하여 안전하게 접속하는 방법을 단계별로 안내합니다.

1. SSH 키 인증 방식이란?

SSH 키 인증 방식은 공개키/개인키 쌍을 이용하여 비밀번호 없이 안전하게 서버에 접속하는 방법입니다. 사용자는 개인키를 로컬에 보관하고, 서버에는 공개키만 등록함으로써 인증을 수행합니다.

장점:

  • 비밀번호 유출 걱정 없이 접속 가능
  • 무차별 대입 공격 차단
  • 자동화 및 스크립트 환경에 적합

2. SSH 키 생성 방법 (로컬 PC)

Linux, macOS, Windows(WSL, Git Bash 등)에서 다음 명령어로 SSH 키를 생성할 수 있습니다:

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

설정 흐름:

  1. 파일 경로 입력 (기본값 ~/.ssh/id_rsa)
  2. 암호(passphrase) 설정 여부 선택
  3. id_rsa (개인키), id_rsa.pub (공개키) 생성

생성된 키는 ~/.ssh 디렉토리에 저장되며, 개인키는 절대로 외부에 유출되지 않도록 주의해야 합니다.

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

다음 방법 중 하나로 생성된 공개키(.pub)를 서버에 등록할 수 있습니다.

방법 1: ssh-copy-id (가장 간편)

ssh-copy-id -i ~/.ssh/id_rsa.pub 사용자명@서버IP

방법 2: 수동 등록


scp ~/.ssh/id_rsa.pub 사용자명@서버IP:/home/사용자명/
# 서버 접속 후
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
      

등록이 완료되면 클라이언트 PC에서 ssh -i ~/.ssh/id_rsa 사용자명@서버IP로 접속이 가능해집니다.

4. 비밀번호 로그인 차단 설정

SSH 키 인증을 설정한 후에는 비밀번호 로그인 방식을 비활성화하여 보안을 더욱 강화할 수 있습니다.


sudo nano /etc/ssh/sshd_config

# 다음 항목을 수정
PasswordAuthentication no
ChallengeResponseAuthentication no

# SSH 서비스 재시작
sudo systemctl restart ssh
      

주의: 키 인증으로 접속이 정상적으로 되는지 확인한 후 위 설정을 적용하세요.

5. SSH 포트 변경으로 추가 보안

기본 포트(22번)는 공격 대상이 되기 쉬우므로 포트를 변경하면 기초적인 스캐닝 차단 효과를 볼 수 있습니다.


sudo nano /etc/ssh/sshd_config

# 예시: 2222번으로 변경
Port 2222

# UFW 방화벽에서 새 포트 허용
sudo ufw allow 2222/tcp
sudo systemctl restart ssh
      

6. 클라이언트 설정 간소화 (config 파일 사용)

여러 서버에 SSH 키로 접속하는 경우, ~/.ssh/config 파일을 사용하면 접속 명령어를 간편하게 만들 수 있습니다.


Host myserver
    HostName 123.456.789.0
    User ubuntu
    Port 2222
    IdentityFile ~/.ssh/id_rsa
      

이후 ssh myserver 명령어만으로 간단히 접속할 수 있습니다.

7. 보안을 위한 추가 팁

  • 개인키는 반드시 비밀번호(Passphrase) 설정
  • 서버에서 authorized_keys 파일 접근 권한 철저히 제한
  • 정기적으로 SSH 로그(/var/log/auth.log) 확인
  • Fail2Ban과 병행하여 SSH 접근 제한
  • 불필요한 포트 차단 (방화벽 설정)

8. 비밀번호 인증 복구 방법 (비상 시)

실수로 SSH 키만 등록한 후 접속에 실패하거나, 개인키 분실 시에는 다음과 같은 방법으로 복구할 수 있습니다:

  • 호스팅 콘솔(VPS, 클라우드)에서 웹 콘솔 접속
  • /etc/ssh/sshd_config 파일에서 PasswordAuthentication yes로 수정
  • 비밀번호 로그인 임시 허용 후 키 재등록
  • 재설정 완료 후 다시 비밀번호 로그인 차단

9. SSH 키 인증 vs 비밀번호 인증 요약 비교

항목 비밀번호 인증 SSH 키 인증
보안 수준 낮음 높음
무차별 공격 취약 아니오
자동화 적합성 낮음 높음
운영 편의성 간단 설정 후 매우 편리

10. 결론: 서버 보안의 시작은 SSH 키 설정

리눅스 서버를 안전하게 운영하기 위해서는 SSH 키 인증 방식을 도입하는 것이 필수입니다. 비밀번호 기반의 로그인은 더 이상 안전하지 않으며, 키 인증을 통해 더 빠르고, 더 안전한 접속이 가능합니다.

이 글을 따라 SSH 키를 설정하고, 비밀번호 로그인을 차단했다면 이제 한 단계 더 안전한 서버 운영 환경을 갖추게 된 것입니다. 다음 글에서는 UFW 방화벽 고급 설정 및 포트 관리 전략을 다룰 예정입니다.