?
사용자

SSH 프로토콜 개념과 키 기반 인증 설정 가이드

SSH 프로토콜의 기본 원리를 이해하고, 비밀번호 입력 없이 안전하게 원격 서버에 접속할 수 있는 SSH 키 기반 인증 설정 방법을 안내합니다.

#ssh#키 기반 인증#공개키#인증#원격 접속
recipe.md

SSH 프로토콜 이해 및 키 기반 인증 설정 가이드

SSH(Secure Shell)는 네트워크를 통해 원격 컴퓨터와 안전하게 통신하기 위한 프로토콜입니다. 암호화 기술을 사용하여 데이터의 기밀성과 무결성을 보장하며, 원격 서버 접속, 파일 전송, 명령어 실행 등 다양한 용도로 활용됩니다.

1. SSH 프로토콜이란?
  • 정의: SSH는 클라이언트-서버 모델을 기반으로 동작하며, 통신 채널을 암호화하여 도청이나 데이터 변조를 방지합니다. 기본적으로 TCP 포트 22번을 사용합니다.
  • 주요 기능:
    • 원격 로그인: 비밀번호 또는 키 기반 인증을 통해 원격 서버에 접속하여 쉘을 실행합니다.
    • 안전한 파일 전송: SCP(Secure Copy Protocol) 또는 SFTP(SSH File Transfer Protocol)를 사용하여 파일을 안전하게 전송합니다.
    • 포트 포워딩 (터널링): 암호화된 SSH 채널을 통해 다른 네트워크 서비스의 트래픽을 안전하게 전달합니다.
  • 왜 SSH를 사용하는가?: 비밀번호 인증은 중간에서 가로채기(Sniffing) 공격에 취약할 수 있습니다. SSH 키 기반 인증은 이러한 보안 위험을 크게 줄여줍니다.
2. SSH 키 기반 인증 설정 방법

SSH 키 기반 인증은 공개키 암호화 방식을 사용합니다. 사용자는 한 쌍의 키(개인 키와 공개 키)를 생성하며, 개인 키는 안전하게 보관하고 공개 키는 접속하려는 원격 서버에 등록합니다.

단계 1: SSH 키 쌍 생성

로컬 컴퓨터(클라이언트)에서 다음 명령어를 실행하여 SSH 키 쌍을 생성합니다.

ssh-keygen -t rsa -b 4096
  • -t rsa: 사용할 암호화 알고리즘을 지정합니다. RSA가 가장 일반적입니다.
  • -b 4096: 키의 비트 길이를 지정합니다. 4096비트가 권장됩니다.

명령 실행 후:

  1. 키 저장 위치 지정: 기본값(~/.ssh/id_rsa)을 사용하려면 Enter를 누릅니다. 다른 경로를 원하면 입력합니다.
  2. Passphrase 설정: 개인 키에 대한 암호를 설정합니다. 이 Passphrase는 개인 키를 사용할 때마다 입력해야 하므로, 강력하고 기억하기 쉬운 것으로 설정하거나 빈칸으로 둘 수 있습니다 (보안상 권장되지 않음).

키 생성이 완료되면 ~/.ssh 디렉토리에 id_rsa(개인 키)와 id_rsa.pub(공개 키) 파일이 생성됩니다.

단계 2: 원격 서버에 공개 키 등록

생성된 공개 키(id_rsa.pub)를 원격 서버의 ~/.ssh/authorized_keys 파일에 추가해야 합니다.

방법 A: ssh-copy-id 명령어 사용 (권장)

가장 간편하고 안전한 방법입니다. 로컬 컴퓨터에서 다음 명령어를 실행합니다.

ssh-copy-id -i ~/.ssh/id_rsa.pub 사용자명@원격서버IP
  • 사용자명: 원격 서버의 사용자 계정 이름
  • 원격서버IP: 접속하려는 원격 서버의 IP 주소 또는 도메인 이름

명령 실행 시 원격 서버의 사용자 비밀번호를 한 번 입력해야 합니다. 이후 ssh-copy-id가 자동으로 공개 키를 서버의 authorized_keys 파일에 추가합니다.

방법 B: 수동으로 공개 키 복사

ssh-copy-id 명령어를 사용할 수 없거나, 수동으로 관리하고 싶을 때 사용합니다.

  1. 로컬 컴퓨터에서 공개 키 내용을 복사합니다.

    cat ~/.ssh/id_rsa.pub
    

    출력되는 전체 내용을 복사합니다.

  2. 원격 서버에 비밀번호로 접속합니다.

    ssh 사용자명@원격서버IP
    
  3. 원격 서버에서 ~/.ssh 디렉토리가 없으면 생성하고, 권한을 설정합니다.

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    
  4. authorized_keys 파일에 공개 키 내용을 붙여넣습니다. 파일이 없으면 새로 생성됩니다.

    echo "여기에 복사한 공개 키 내용을 붙여넣으세요" >> ~/.ssh/authorized_keys
    
  5. authorized_keys 파일의 권한을 설정합니다.

    chmod 600 ~/.ssh/authorized_keys
    

단계 3: 키 기반 인증으로 접속 테스트

설정이 올바르게 되었다면, 비밀번호 입력 없이 원격 서버에 접속할 수 있어야 합니다.

ssh 사용자명@원격서버IP

만약 Passphrase를 설정했다면, 개인 키에 대한 Passphrase를 입력하라는 메시지가 나타납니다.

팁: 여러 서버에 동일한 키를 사용하거나, 다른 키를 사용하여 접속할 수도 있습니다. SSH 설정 파일(~/.ssh/config)을 활용하면 편리합니다.

3. 주의사항
  • 개인 키 보안: 개인 키(id_rsa 또는 지정한 이름의 파일)는 절대로 외부에 노출되어서는 안 됩니다. 외부에 유출될 경우 해당 키로 접근 가능한 모든 서버에 무단 접속을 허용하게 됩니다. 파일 권한을 600으로 설정하여 본인만 읽고 쓸 수 있도록 관리해야 합니다.
  • Passphrase 사용: 보안 강화를 위해 개인 키에 Passphrase를 설정하는 것이 좋습니다. Passphrase는 로컬 컴퓨터에서 개인 키를 사용할 때마다 입력해야 합니다.
  • authorized_keys 파일 권한: 원격 서버의 ~/.ssh 디렉토리는 700, authorized_keys 파일은 600 권한이 설정되어야 SSH 서버가 이를 정상적으로 인식합니다.
  • SSH 서버 설정: 원격 서버의 SSH 데몬 설정(sshd_config)에서 키 기반 인증이 활성화되어 있는지 확인해야 합니다. 기본적으로 활성화되어 있지만, 보안상의 이유로 비활성화했을 수도 있습니다.

SSH 키 기반 인증은 원격 서버 관리의 보안성과 편의성을 크게 향상시키는 필수적인 설정입니다. 이 가이드가 안전한 원격 접속 환경 구축에 도움이 되기를 바랍니다.

0
스크랩
17
좋아요
0
댓글
SSH 프로토콜 개념과 키 기반 인증 설정 가이드