운영체제별 SSH Key Pair 준비

  • 문서 생성일: 0001-01-01 00:00:00 +0000 UTC
  • Oracle Cloud Infrastructure(OCI)의 VM 인스턴스가 지원하는 접속 프로토콜은 SSH입니다. OCI VM 인스턴스 SSH 서버의 기본 사용자 인증 방식은 Key Pair입니다. 따라서 OCI VM 인스턴스를 생성때 SSH 공개키를 등록해야 합니다. 이 문서에서는 SSH 접속에 사용할 Key Pair(SSH-2 RSA 타입)를 만드는 방법을 정리합니다.


    이번 문서는 다음과 같은 목차로 구성됩니다.


    Key Pair란?

    SSH Key는 개인키(private key)와 공개키(public key)로 구성됩니다. 두 개의 ssh key를 합쳐서 SSH Key Pair라고 부릅니다.

    오라클이 제공하는 VM 이미지는 다음과 같은 암호화 알고리즘 유형을 지원합니다.

    OCI VM 인스턴스를 만들기 전에 앞에서 열거한 암호화 알고리즘을 사용하여 SSH key Pair를 준비해야 합니다. 사용자가 정의한 Custom VM 이미지에서는 지원하는 SSH key 유형이 다를 수 있습니다. 이 경우에 해당 Custom 이미지가 지원하는 ssh key 타입에 확인하고 작업해야 합니다. OCI가 제공하는 VM 이미지에 사용할 ssh Key Pair를 RSA, DSS, DSA와 같은 암호화 알고리즘으로 만든다면, 최소 2048 비트를 사용을 권장합니다. 반면 ECDSA 암호화 알고리즘으로 ssh Key Pair를 만든다면, 최소 256 비트 사용을 권장합니다.

    SSH 키 생성

    각 운영체제(Linux, OSX, Window)별로 SSH 키를 생성 생성하는 방법은 다음과 같습니다.

    운영체제 SSH 키 생성 툴
    Linus ssh-keygen
    OS X ssh-keygen
    Windows 10 이상 ssh-keygen
    Windows 10 아래 버전 puttygen

    리눅스, 맥 OS(OS X), Window 10을 사용할 경우에 ssh-keygen 사용하여 ssh key를 생성합니다. ssh-keygen이 설치되어 있지 않다면, 각 운영체제에 맞는 OpenSSH(http://www.openssh.com/portable.html)를 설치합니다. Windows 10 아래 버전에서는 PuTTY를 설치하고 PuTTY의 구성 컴포넌트인 PuTTY Key Generator(puttygen)을 사용하여 ssh key를 생성합니다.

    ssh-keygen을 이용한 ssh key 생성

    리눅스, Mac OS 및 Window 10에서는 ssh-keygen을 이용하여 ssh key pair를 생성합니다. 이때 아래와 같은 형식의 옵션으로 ssh-keygen 명령을 실행합니다.

    ssh-keygen -t rsa -N "" -b 2048 -C "comment" -f <path/KeyFileName>
    

    위와 같은 형식의 명령에서 각 옵션은 다음과 같은 의미를 갖습니다.

    옵션 설명 예제 입력 비고
    -t 생성 key 유형 지정 -t rsa 기본값이 rsa, 생략 가능
    -b 암호화 비트수 -b 2048 최소 2048을 권장
    -C 커맨트 입력 -C “ssh key for demo” 인증서 구분을 위해서 사용자 email을 주로 사용
    -N new_passphrase 입력 -N “” 공백 문자열 입력
    -f 출력 파일명, 위치 포함 -f ./id_rsa

    ssh key를 생성하는 명령을 앞에서 설정한 입력 값으로 다음과 같이 실행할 수 있습니다.

    > ssh-keygen -t rsa -N "" -b 2048 -C "ssh key for demo" -f ./id_rsa
    Generating public/private rsa key pair.
    Your identification has been saved in ./id_rsa.
    Your public key has been saved in ./id_rsa.pub.
    The key fingerprint is:
    SHA256:SFo9Bzyr8dzoANqGZZ9oxwdZIBo+TCsJ9b8Ed5I8OlY ssh key for demo
    The key's randomart image is:
    +---[RSA 2048]----+
    |..+ . .o.        |
    |.= = o o+.       |
    |o * o Eo+o.      |
    | . .+X+=.o       |
    |   *==+BSo       |
    |  o.=oB.= .      |
    |   o ..+         |
    |        .        |
    |                 |
    +----[SHA256]-----+
     >
    

    앞에서 f 옵션으로 지정한 위치에 다음과 같은 파일이 생성된 것을 확인할 수 있습니다.

     > ls -al id_rsa*
    -rw-------  1 taewan  staff  1823  1 17 15:25 id_rsa
    -rw-r--r--  1 taewan  staff   398  1 17 15:25 id_rsa.pub
    >
    

    window 10 아래 버전에서 ssh key 생성

    window 10 아래에서는 putty에 포함된 puttygen을 이용하여 SSH 키를 생성할 수 있습니다.

    Windows 10 아래 버전에서 git을 설치하면, git과 함께 설치되는 MINGW32가 제공하는 ssh-keygen이 설치됩니다. ssh-keygen을 이용하여 SSH key pair를 생성할 수 있습니다. ssh-keygen은 git-bash에서 실행되어야 합니다.

    putty를 내려받아 설치하면 puttygen도 함께 설치됩니다. puttygen을 실행하면 <그림 1>과 같은 모습으로 실행됩니다. <그림 1>과 같이 puttygen에서 키 타입으로 RSA와 키 생성의 비트 수를 2048로 설정한 후 “Generate” 버튼을 클릭합니다.

    - 그림 1. puttygen(Putty Key Generator) 모습

    PuttyGen은 키를 생성할 때 마우스 위치 값을 키 생성 초깃값으로 활용합니다. 따라서 키를 생성이 완료할 때까지 <그림 2>의 빨간색 영역에서 마우스를 움직여야 합니다.

    - 그림 2. RSA 키 생성 진행 중

    RSA 키 생성이 완료되면 <그림 3>과 같이 UI가 변경됩니다. 이제 <그림 3>과 같이 Save Private Key 버튼을 클릭해서 개인키(Private Key)를 저장합니다. 프롬프트가 뜨면 passphrase 없이 키가 저장되도록 Yes 선택 후 저장합니다.

    - 그림 3. 개인 키 저장

    <그림 4>와 같이 개인 키를 저장합니다. 여기에서 저장된 개인키(Private Key)는 PuTTY Private Key(PPK) 형식으로 저장되며, 이 PPK 파일은 PuTTY에서만 사용 가능합니다.

    - 그림 4. 개인 키 저장

    Putty Key Generator는 공개키를 저장할 때, OpenSSH 형식이 아닌 자체 형식으로 저장합니다. 따라서 Putty Key Generator가 제공하는 공개키 저장 기능을 사용하지 않습니다. <그림 5>에서 공개키 문자열을 모두 복사하여 별도의 파일에 붙여넣고 저장합니다. 새로 만든 파일은 앞에서 만든 개인키와 같은 폴더에 저장합니다. 파일명은 개인키 파일명과 동일하게 하고 확장자는 pub로 설정합니다.

    - 그림 5. 공개 키 저장

    PPK 형식 개인키를 PEM 형식으로 변환

    Putty Key Generator는 개인키를 PPK 형식으로 저장합니다. 이 개인키를 Putty가 아닌 일반 SSH의 개인키로 사용할 수 없습니다. PPK 형식의 개인키를 PEM 형식으로 변환하는 기능을 Putty Key Generator에서 제공합니다. Putty Key Generator의 메뉴에서 Conversions을 선택하고 Export OpenSSH Key를 선택합니다. 프롬프트가 뜨면 passphrase 없이 키 저장하기 위해서 Yes 선택 후 파일을 저장합니다.

    참고 문서

    김태완 avatar
  • 작성자: 김태완
  • 사랑하는 민수와 데이터 관리, 데이터 분석 & 클라우드에 집중하고 있습니다.
  • E-mail: taewanme@gmail.com
  • Disclaimer
    이 저작물은 Oracle과 관계없이 개인으로서 개인의 시간을 할애하여 작성된 글 입니다. 본 글의 내용, 입장, 예측은 Oracle을 공식적으로 절대 대변하지 않습니다.