Amazon EC2 인스턴스용 키 페어(Key Pair) 만들기

Amazon EC2 인스턴스용 키 페어(Key Pair) 만들기

Amazon EC2를 사용해 키 페어를 만들거나, 서드파티 도구로 키 페어를 만든 뒤 Amazon EC2로 가져올 수 있어요. Amazon EC2는 Linux 및 Windows 인스턴스용 2048비트 SSH-2 RSA 키를 지원합니다. 또한 Amazon EC2는 Linux 인스턴스용 ED25519 키도 지원합니다.

키 페어를 만든 후 인스턴스에 연결하는 방법은 Connect to your Linux instance using SSH와 Connect to your Windows instance using RDP를 참고하세요.

출처: 문서

본문

Amazon EC2를 사용해 키 페어를 만들거나, 서드파티 도구로 키 페어를 만든 뒤 Amazon EC2로 가져올 수 있습니다. Amazon EC2는 Linux 및 Windows 인스턴스용 2048비트 SSH-2 RSA 키를 지원합니다. 또한 Amazon EC2는 Linux 인스턴스용 ED25519 키도 지원합니다.

키 페어를 만든 후 인스턴스에 연결하는 방법은 Connect to your Linux instance using SSH와 Connect to your Windows instance using RDP를 참고하세요.

Amazon EC2를 사용한 키 페어 만들기

Amazon EC2로 키 페어를 만들면 공용 키는 Amazon EC2에 저장되고, 프라이빗 키는 본인이 저장합니다.

리전당 최대 5,000개의 키 페어를 만들 수 있습니다. 증가를 요청하려면 지원 케이스를 만드세요. 자세한 내용은 Support User Guide의 Creating a support case를 참고하세요.

콘솔 (Console)

Amazon EC2를 사용해 키 페어를 만들려면

  1. Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
  2. 탐색 창에서 Network & Security 아래의 Key Pairs를 선택합니다.
  3. Create key pair를 선택합니다.
  4. Name에 키 페어에 대한 설명적인 이름을 입력합니다. Amazon EC2는 공용 키를 지정한 이름(키 이름)과 연결합니다. 키 이름에는 최대 255개의 ASCII 문자를 포함할 수 있습니다. 앞뒤 공백은 포함할 수 없습니다.
  5. 운영체제에 적합한 키 페어 유형을 선택합니다: (Linux 인스턴스) 키 페어 유형으로 RSA 또는 ED25519를 선택합니다. (Windows 인스턴스) 키 페어 유형으로 RSA를 선택합니다. ED25519 키는 Windows 인스턴스에서는 지원되지 않습니다.
  6. Private key file format에서 프라이빗 키를 저장할 형식을 선택합니다. OpenSSH와 함께 사용할 수 있는 형식으로 프라이빗 키를 저장하려면 pem을 선택합니다. PuTTY와 함께 사용할 수 있는 형식으로 저장하려면 ppk를 선택합니다.
  7. 공용 키에 태그를 추가하려면 Add tag를 선택하고 태그의 키와 값을 입력합니다. 각 태그에 대해 반복합니다.
  8. Create key pair를 선택합니다.
  9. 프라이빗 키 파일이 브라우저에 의해 자동으로 다운로드됩니다. 기본 파일 이름은 키 페어의 이름으로 지정한 이름이고, 파일 이름 확장자는 선택한 파일 형식에 따라 결정됩니다. 프라이빗 키 파일을 안전한 곳에 저장하세요. 프라이빗 키 파일을 저장할 수 있는 기회는 이때뿐입니다.
  10. macOS 또는 Linux 컴퓨터의 SSH 클라이언트를 사용해 Linux 인스턴스에 연결하려면 다음 명령을 사용해 프라이빗 키 파일의 권한을 본인만 읽을 수 있도록 설정합니다. 이 권한을 설정하지 않으면 이 키 페어로 인스턴스에 연결할 수 없습니다. 자세한 내용은 Error: Unprotected private key file을 참고하세요.

Important
macOS 또는 Linux 컴퓨터에서 이 명령을 실행해야 해요.

chmod 400 key-pair-name.pem

AWS CLI

Amazon EC2를 사용해 키 페어를 만들려면

  1. 다음 create-key-pair 명령을 사용해 키 페어를 생성하고 프라이빗 키를 .pem 파일에 저장합니다. --query 옵션은 프라이빗 키 자료를 출력에 인쇄합니다. --output 옵션은 프라이빗 키 자료를 지정된 파일에 저장합니다. 확장자는 키 형식에 따라 .pem 또는 .ppk여야 합니다. 프라이빗 키 이름은 공용 키 이름과 다를 수 있지만, 사용 편의를 위해 같은 이름을 사용하세요.
aws ec2 create-key-pair \
    --key-name my-key-pair \
    --key-type rsa \
    --key-format pem \
    --query "KeyMaterial" \
    --output text > my-key-pair.pem
  1. macOS 또는 Linux 컴퓨터의 SSH 클라이언트를 사용해 Linux 인스턴스에 연결하려면 다음 명령을 사용해 프라이빗 키 파일의 권한을 본인만 읽을 수 있도록 설정합니다. 이 권한을 설정하지 않으면 이 키 페어로 인스턴스에 연결할 수 없습니다. 자세한 내용은 Error: Unprotected private key file을 참고하세요.
chmod 400 key-pair-name.pem

PowerShell

Amazon EC2를 사용해 키 페어를 만들려면

다음 New-EC2KeyPair cmdlet을 사용해 키를 생성하고 .pem 또는 .ppk 파일에 저장합니다. Out-File cmdlet은 지정된 확장자의 파일에 프라이빗 키 자료를 저장합니다. 확장자는 키 형식에 따라 .pem 또는 .ppk여야 합니다. 프라이빗 키 이름은 공용 키 이름과 다를 수 있지만, 사용 편의를 위해 같은 이름을 사용하세요.

(New-EC2KeyPair `
    -KeyName "my-key-pair" `
    -KeyType "rsa" `
    -KeyFormat "pem").KeyMaterial | Out-File -Encoding ascii -FilePath C:\path\my-key-pair.pem

AWS CloudFormation을 사용한 키 페어 만들기

CloudFormation을 사용해 새 키 페어를 만들면 프라이빗 키가 AWS Systems Manager Parameter Store에 저장됩니다. 파라미터 이름 형식은 다음과 같습니다.

/ec2/keypair/key_pair_id

자세한 내용은 AWS Systems Manager User Guide의 AWS Systems Manager Parameter Store를 참고하세요.

CloudFormation을 사용해 키 페어를 만들려면

  1. 템플릿에 AWS::EC2::KeyPair 리소스를 지정합니다.
Resources:
  NewKeyPair:
    Type: 'AWS::EC2::KeyPair'
    Properties: 
      KeyName: new-key-pair
  1. 다음 describe-key-pairs 명령을 사용해 키 페어의 ID를 가져옵니다. 다음은 예시 출력입니다.
aws ec2 describe-key-pairs --filters Name=key-name,Values=new-key-pair --query KeyPairs[*].KeyPairId --output text
key-05abb699beEXAMPLE
  1. 다음 get-parameter 명령을 사용해 키의 파라미터를 가져오고 키 자료를 .pem 파일에 저장합니다.
aws ssm get-parameter --name /ec2/keypair/key-05abb699beEXAMPLE --with-decryption --query Parameter.Value --output text > new-key-pair.pem

필요한 IAM 권한 (Required IAM permissions)

CloudFormation이 대신 Parameter Store 파라미터를 관리할 수 있게 하려면, CloudFormation 또는 사용자가 수임하는 IAM 역할에 다음 권한이 있어야 합니다.

  • ssm:PutParameter – 프라이빗 키 자료에 대한 파라미터를 만들 수 있는 권한을 부여합니다.
  • ssm:DeleteParameter – 프라이빗 키 자료를 저장한 파라미터를 삭제할 수 있는 권한을 부여합니다. 이 권한은 키 페어가 가져온 것이든 CloudFormation이 만든 것이든 필요합니다.

CloudFormation이 스택이 만들었거나 가져온 키 페어를 삭제할 때, CloudFormation은 키 페어를 만들 때만 파라미터를 만들고 가져올 때는 만들지 않지만, 파라미터를 삭제할 권한이 있는지 권한 검사를 수행합니다. CloudFormation은 계정의 어떤 파라미터와도 일치하지 않는 조작된 파라미터 이름으로 필요한 권한을 테스트합니다. 따라서 AccessDeniedException 오류 메시지에 조작된 파라미터 이름이 표시될 수 있습니다.

서드파티 도구로 키 페어 만들고 공용 키를 Amazon EC2로 가져오기

Amazon EC2를 사용해 키 페어를 만드는 대신, 서드파티 도구로 RSA 또는 ED25519 키 페어를 만든 다음 공용 키를 Amazon EC2로 가져올 수 있습니다.

키 페어 요구사항 (Requirements for key pairs)

Note

  • (Linux 및 Windows) RSA
  • (Linux만 해당) ED25519 – ED25519 키는 Windows 인스턴스에서는 지원되지 않습니다.
  • Amazon EC2는 DSA 키를 허용하지 않습니다.
  • OpenSSH 공용 키 형식(Linux의 경우 ~/.ssh/authorized_keys 형식)

  • (Linux만 해당) EC2 Instance Connect API를 사용하면서 SSH로 연결한다면 SSH2 형식도 지원됩니다.

  • SSH 프라이빗 키 파일 형식은 PEM 또는 PPK여야 합니다.

  • (RSA만 해당) Base64로 인코딩된 DER 형식

  • (RSA만 해당) RFC 4716에 지정된 SSH 공용 키 파일 형식

  • 1024, 2048, 4096.

  • (Linux만 해당) EC2 Instance Connect API를 사용하면서 SSH로 연결한다면 지원되는 길이는 2048과 4096입니다.

서드파티 도구로 키 페어를 만들려면

Important
키 페어를 만들 수 있는 기회는 단 한 번뿐이에요. 프라이빗 키를 잃어버리면 복구할 수 없습니다.

  1. 선택한 서드파티 도구로 키 페어를 생성합니다. 예를 들어 표준 OpenSSH 설치에 포함된 도구인 ssh-keygen을 사용할 수 있습니다. 또는 Java, Ruby, Python 및 기타 여러 프로그래밍 언어에서 키 페어를 만드는 데 사용할 수 있는 표준 라이브러리를 제공합니다. 프라이빗 키는 PEM 또는 PPK 형식이어야 합니다. 예를 들어 PEM 형식의 OpenSSH 키를 생성하려면 ssh-keygen -m PEM을 사용합니다.
  2. 공용 키를 로컬 파일에 저장합니다. 예: ~/.ssh/my-key-pair.pub(Linux, macOS) 또는 C:\keys\my-key-pair.pub(Windows). 이 파일의 파일 이름 확장자는 중요하지 않습니다.
  3. 프라이빗 키를 .pem 또는 .ppk 확장자를 가진 로컬 파일에 저장합니다. 예: ~/.ssh/my-key-pair.pem 또는 ~/.ssh/my-key-pair.ppk(Linux, macOS), 또는 C:\keys\my-key-pair.pem 또는 C:\keys\my-key-pair.ppk(Windows). 인스턴스에 연결하는 데 사용하는 도구에 따라 특정 파일 형식이 필요하므로 파일 확장자가 중요합니다. OpenSSH는 .pem 파일이 필요하고 PuTTY는 .ppk 파일이 필요합니다. 프라이빗 키 파일을 안전한 곳에 저장하세요. 인스턴스를 시작할 때 공용 키의 이름을 제공하고, 인스턴스에 연결할 때마다 해당 프라이빗 키를 제공해야 합니다.

키 페어를 만든 후 다음 방법 중 하나를 사용해 공용 키를 Amazon EC2로 가져옵니다.

콘솔 (Console)

공용 키를 Amazon EC2로 가져오려면

Note
새 키 페어를 가져올 때는 키 페어 이름이 계정의 리전에서 고유해야 해요.

  1. Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
  2. 탐색 창에서 Key Pairs를 선택합니다.
  3. Import key pair를 선택합니다.
  4. Name에 공용 키에 대한 설명적인 이름을 입력합니다. 이름에는 최대 255개의 ASCII 문자를 포함할 수 있습니다. 앞뒤 공백은 포함할 수 없습니다. EC2 콘솔에서 인스턴스에 연결할 때 콘솔은 이 이름을 프라이빗 키 파일의 이름으로 제안합니다.
  5. Browse를 선택해 공용 키로 이동해 선택하거나, 공용 키의 내용을 Public key contents 필드에 붙여넣습니다.
  6. Import key pair를 선택합니다.
  7. 가져온 공용 키가 키 페어 목록에 나타나는지 확인합니다.

AWS CLI

공용 키를 Amazon EC2로 가져오려면

import-key-pair 명령을 사용해요.

aws ec2 import-key-pair \
    --key-name my-key-pair \
    --public-key-material fileb://path/my-key-pair.pub

키 페어가 성공적으로 가져왔는지 확인하려면

describe-key-pairs 명령을 사용해요.

aws ec2 describe-key-pairs --key-names my-key-pair

PowerShell

공용 키를 Amazon EC2로 가져오려면

Import-EC2KeyPair cmdlet을 사용해요.

$publickey=[Io.File]::ReadAllText("C:\Users\TestUser\.ssh\id_rsa.pub")
Import-EC2KeyPair `
    -KeyName my-key-pair `
    -PublicKey $publickey

키 페어가 성공적으로 가져왔는지 확인하려면

Get-EC2KeyPair cmdlet을 사용해요.

Get-EC2KeyPair -KeyName my-key-pair

더 알아보기 (Learn more)