SSH 키 인증 설정 가이드

SSH 키 인증 설정 가이드
Photo by Boitumelo / Unsplash

On this page

1. SSH 설치

Windows

Windows 10 버전 1803 이후부터는 OpenSSH가 기본으로 포함되어 있습니다. 활성화하려면:

  1. 설정 > 앱 > 앱 및 기능 > 선택적 기능 관리로 이동
  2. "OpenSSH 클라이언트" 설치

Ubuntu/Debian

대부분 기본 설치되어 있지만, 없다면:

sudo apt update
sudo apt install openssh-client openssh-server

macOS

SSH 클라이언트가 기본으로 설치되어 있습니다.

2. SSH 키 생성

모든 플랫폼에서 다음 명령어로 키를 생성할 수 있습니다:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/myserver_key

  • t rsa: RSA 암호화 사용
  • b 4096: 4096비트 키 길이 (강력한 보안)
  • f ~/.ssh/myserver_key: 키 파일 저장 위치 및 이름

비밀문구(passphrase) 설정은 선택사항입니다.

3. 공개키를 서버에 복사

Linux/macOS 사용자

ssh-copy-id 명령어 사용:

ssh-copy-id -i ~/.ssh/myserver_key.pub user@server_ip -p port_number

Windows 사용자

Windows에는 ssh-copy-id가 없으므로 수동으로 복사해야 합니다:

  1. 복사한 공개키 내용을 붙여넣고 저장 (Ctrl+X, Y, Enter)

권한 설정:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

서버에서 authorized_keys 파일 편집:

mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys

서버에 SSH 접속:

ssh -p port_number user@server_ip

공개키 내용 확인:

type %USERPROFILE%\\.ssh\\myserver_key.pub

4. SSH 접속 테스트

ssh -i ~/.ssh/myserver_key -p port_number user@server_ip

Windows에서는 전체 경로를 사용해야 할 수 있습니다:

ssh -i C:\\Users\\YourUsername\\.ssh\\myserver_key -p port_number user@server_ip

5. 추가 설정 및 팁

SSH 설정 파일 사용

~/.ssh/config 파일을 생성하고 다음과 같이 설정:

Host myserver
    HostName server_ip
    User username
    Port port_number
    IdentityFile ~/.ssh/myserver_key

이제 ssh myserver로 간단히 접속 가능합니다.

서버 측 보안 강화

서버의 /etc/ssh/sshd_config 파일에서:

PasswordAuthentication no
PermitRootLogin no

변경 후 SSH 서비스 재시작:

sudo systemctl restart sshd

키 관리 팁

  • 여러 서버에 대해 다른 키 사용
  • 정기적으로 키 교체
  • 키 암호(passphrase) 사용 고려

이 가이드를 따라하면 비밀번호 없이 안전하게 SSH 키 인증으로 서버에 접속할 수 있습니다. 보안과 편의성을 모두 높일 수 있는 훌륭한 방법입니다.


보안옵션

SSH 서버의 보안을 강화하는 중요한 옵션들입니다. 각각의 기능과 fail2ban에 대해 자세히 설명해 드리겠습니다.

  1. PasswordAuthentication no
    • 기능: 비밀번호를 사용한 SSH 로그인을 비활성화합니다.
    • 효과: 무차별 대입 공격(brute-force attack)을 방지합니다. 오직 SSH 키를 통한 인증만 허용됩니다.
  2. PermitRootLogin no
    • 기능: root 계정으로의 직접적인 SSH 로그인을 금지합니다.
    • 효과: 시스템의 가장 강력한 계정인 root에 대한 무단 접근을 방지합니다. 대신 일반 사용자로 로그인 후 필요 시 sudo를 사용하여 root 권한을 얻도록 합니다.
  3. PubkeyAuthentication yes
    • 기능: 공개키 인증 방식을 활성화합니다.
    • 효과: SSH 키 쌍을 사용한 인증을 허용합니다. 이는 비밀번호 인증보다 더 안전한 방법입니다.
  4. fail2ban
    • 기능: 지속적인 로그인 실패 시도를 모니터링하고 차단하는 도구입니다.
    • 설치: sudo apt install fail2ban
    • 효과:
      • 특정 IP 주소에서 반복적으로 로그인 실패가 발생하면 해당 IP를 일정 시간 동안 차단합니다.
      • SSH뿐만 아니라 다양한 서비스(예: 웹 서버)에 대한 공격을 방어할 수 있습니다.
      • 무차별 대입 공격을 효과적으로 막을 수 있습니다.

이러한 설정들을 조합하면 SSH 서버의 보안을 크게 향상시킬 수 있습니다:

  1. PubkeyAuthentication yesPasswordAuthentication no를 함께 사용하면, 오직 SSH 키를 통한 인증만 허용되어 보안이 강화됩니다.
  2. PermitRootLogin no를 설정하여 root 계정의 직접적인 접근을 차단합니다.
  3. fail2ban을 추가로 설치하여 자동화된 공격 시도를 탐지하고 차단합니다.

이러한 설정을 적용한 후에는 반드시 SSH 서비스를 재시작해야 합니다:

bashCopysudo systemctl restart sshd

주의: 이러한 설정을 적용하기 전에 반드시 SSH 키 인증이 제대로 작동하는지 확인하세요. 그렇지 않으면 서버에 접근할 수 없게 될 수 있습니다.


  1. sudo apt install fail2ban
    • 설치만으로는 기본 설정으로 동작하지만, 완전한 커스터마이징을 위해서는 추가 설정이 필요합니다.
    • 기본 설정으로도 SSH에 대한 기본적인 보호가 적용됩니다.
  2. SSH 옵션 설정 방법: 이 옵션들은 SSH 서버 설정 파일에서 변경합니다.

설정 후 서비스 시작:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

추가 설정 방법:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

이 파일에서 해당 옵션들을 찾아 수정하거나 추가합니다:

변경 후 SSH 서비스 재시작:


sudo nano /etc/ssh/sshd_config

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no

sudo systemctl restart sshd
  1. PubkeyAuthentication yes
    • 대부분의 현대 SSH 서버 설정에서는 기본적으로 활성화되어 있습니다.
    • 하지만 명시적으로 설정하는 것이 좋은 습관입니다:
      • 설정의 명확성을 위해
      • 향후 업데이트나 변경에 대비하여
      • 일부 오래된 시스템이나 특수한 설정에서는 기본값이 다를 수 있기 때문

주의사항:

  • 이러한 변경을 적용하기 전에 반드시 SSH 키 인증이 제대로 작동하는지 확인하세요.
  • PasswordAuthentication no를 설정하면 키 인증만 가능하게 되므로, 키 설정이 완료된 후에 적용하세요.
  • 변경 사항을 적용한 후에는 새로운 SSH 세션에서 로그인이 가능한지 반드시 테스트하세요.

이러한 설정들을 통해 SSH 서버의 보안을 크게 향상시킬 수 있습니다. fail2ban은 추가적인 보안 계층을 제공하며, SSH 설정은 기본적인 접근 방식을 제어합니다.

Subscribe to Keun's Story newsletter and stay updated.

Don't miss anything. Get all the latest posts delivered straight to your inbox. It's free!
Great! Check your inbox and click the link to confirm your subscription.
Error! Please enter a valid email address!