SSH 키 관리

IBM Cloud® Virtual Servers for Virtual Private Cloud 인스턴스에 액세스하려면 사용할 수 있는 SSH 키가 있어야 합니다. IBM Cloud 콘솔, CLI 및 API에서 SSH 키를 생성, 업데이트 및 삭제할 수 있습니다.

IBM Cloud 콘솔 또는 CLI를 사용하여 키를 관리하는 경우 이미 작성된 인스턴스의 키에는 영향을 주지 않습니다. (기존 Linux 인스턴스의 경우, 인스턴스의 ~/.ssh/ 디렉토리에서 직접 키를 편집할 수 있습니다.)

IBM Cloud® Virtual Private Cloud 은 두 가지 다른 유형의 공용 SSH키를 지원합니다.

  • RSA
  • Ed25519

UI를 사용하여 새 RSA키 쌍을 생성할 수 있습니다. 기존에 생성된 RSA 및 Ed25519 SSH 키를 업로드할 수 있습니다. Ed25519는 운영 체제가 이 키 유형을 지원하는 경우에만 사용할 수 있습니다. Ed25519는 Windows 또는 VMware 이미지와 함께 사용할 수 없습니다.

시작하기 전에

가상 서버 인스턴스를 작성하려면 SSH키를 작성하거나 업로드하고 이를 사용 가능하게 하여 프로비저닝된 후 인스턴스에 연결할 수 있도록 해야 합니다.

IBM Cloud 콘솔을 사용하여 SSH 키 관리

가상 서버를 프로비저닝할 때 새 SSH키를 작성하거나 사용 가능한 기존 SSH키 목록에서 선택하거나 새 SSH키를 업로드할 수 있습니다.

  1. IBM Cloud 콘솔 에서 탐색 메뉴 아이콘메뉴 아이콘 > 인프라 VPC 아이콘 > 컴퓨팅 > SSH 키 으로 이동합니다. 기존 SSH 키가 표시됩니다.
  2. VPC용 SSH키 탭에서 SSH키에 대한 조치 아이콘 추가 조치 아이콘 을 클릭하고 사용 가능한 옵션에서 선택하십시오.
    조치 설명
    이름 변경 기존 SSH 키를 업데이트하면 키 이름이 즉시 변경됩니다.
    삭제 SSH 키를 제거하면, 인스턴스를 프로비저닝하거나 기존 인스턴스에서 OS를 재설치할 때 해당 키를 더 이상 사용할 수 없습니다. 하지만 이전에 해당 키로 프로비저닝한 모든 인스턴스에서는 여전히 해당 키를 사용할 수 있으며, 이를 통해 로그인할 수 있습니다.

특정 리소스 그룹에 사용 가능한 지역의 목록이 표시됩니다.

CLI를 사용하여 SSH 키 관리

또한 CLI를 사용하여 SSH 키를 관리할 수 있습니다.

IBM Cloud CLI vpc-infrastructure 플러그인이 설치되어 있는지 확인하십시오. 자세한 정보는 IBM Cloud CLI for VPC를 참조하십시오.

SSH 키 작업
조치 명령 다음 발생 결과
SSH키를 작성하십시오. ibmcloud is key-create SSH 키를 작성한 후에는 키 목록에 추가됩니다.
키 세부사항을 봅니다. ibmcloud is key 키의 이름 및 키의 ID를 볼 수 있습니다.
키를 나열합니다. ibmcloud is keys 기존 SSH 키를 모두 볼 수 있습니다.
키를 갱신하십시오. ibmcloud is key-update 기존 키를 업데이트하면 키의 이름이 즉시 바뀝니다.
키를 삭제합니다. ibmcloud is key-delete SSH 키를 제거한 후에는 인스턴스를 프로비저닝하거나 기존 인스턴스에서 OS를 재설치할 때 해당 키를 더 이상 사용할 수 없습니다. 하지만 이전에 해당 키로 프로비저닝한 모든 인스턴스에서는 여전히 해당 키를 사용할 수 있으며, 이를 통해 로그인할 수 있습니다.

API를 사용하여 SSH 키 관리하기

API를 사용하여 SSH 키를 관리할 수도 있습니다. 다음 예제에 등장하는 $vpc_api_endpoint $iam_token 변수에 대한 자세한 내용은 ‘가상 사설 클라우드(VPC) API 소개’ 문서의 ‘인증’ 및 ‘엔드포인트 URL’ 섹션을 참조하십시오.

Terraform을 사용하여 SSH키 관리

Terraform을 사용하여 SSH 키를 관리할 수도 있습니다. 자세한 정보는 ibm_is_ssh_keys 를 참조하십시오.

UI를 사용하여 모든 SSH키 나열

모든 SSH키를 나열하려면 다음 단계를 완료하십시오.

  1. IBM Cloud 콘솔 에서 탐색 메뉴 아이콘메뉴 아이콘 > 인프라 VPC 아이콘 > 컴퓨팅 > SSH 키 으로 이동합니다.
  2. 기존 SSH 키가 표시됩니다.

CLI를 사용하여 모든 SSH키 나열

기존 SSH키를 모두 보려면 ibmcloud is keys 명령을 사용하십시오.

--all-resource-groups 옵션을 사용하여 사용 가능한 모든 자원 그룹에 대한 SSH키를 나열하십시오. 선택적으로 특정 자원 그룹에 대한 SSH키만 포함하도록 목록을 필터링할 수 있습니다. RESOURCE_GROUP_ID 또는 RESOURCE_GROUP_NAME 변수를 사용하여 자원 그룹을 지정하십시오. 자세한 정보는 ibmcloud is keys 를 참조하십시오.

ibmcloud is keys [--all-resource-groups]

API를 사용하여 모든 SSH키 나열

API를 사용하여 모든 SSH키를 나열하려면 모든 키 나열 을 사용하십시오.

curl -X GET "$vpc_api_endpoint/v1/keys?version=2023-03-30&generation=2" -H "Authorization: Bearer $iam_token"

Terraform을 사용하여 모든 SSH키 나열

Terraform을 사용하여 모든 SSH키를 나열하려면 ibm_is_ssh_keys를 사용하십시오.

data "ibm_is_ssh_keys" keys {}

UI를 사용하여 SSH키의 세부사항 보기

SSH키의 다음 세부사항을 볼 수 있습니다.

  • 이름
  • 리소스 그룹
  • 지문
  • 유형
  • 길이
  • 작성 날짜(로컬)

SSH키에 대한 세부사항을 보려면 다음 단계를 완료하십시오.

  1. IBM Cloud 콘솔 에서 탐색 메뉴 아이콘메뉴 아이콘 > 인프라 VPC 아이콘 > 컴퓨팅 > SSH 키 으로 이동합니다.
  2. VPC용 SSH키 페이지에 모든 기존 SSH키 목록이 표시됩니다.
  3. 조치 메뉴에서 SSH키를 이름 바꾸기 또는 삭제 할 수 있습니다.

CLI를 사용하여 SSH키의 세부사항 보기

ibmcloud is key 명령을 사용하여 키의 이름 및 키의 ID를 볼 수 있습니다. KEY 변수를 사용하여 SSH키의 이름을 지정하십시오. 자세한 내용은 VPC CLI 참조 가이드의 “ibmcloud is key” 항목을 참조하십시오.

ibmcloud is key KEY

API를 사용하여 SSH키의 세부사항 보기

API를 사용하여 특정 키에 대한 정보를 검색하려면 키 검색 을 사용하십시오.

$id 변수의 경우 세부사항을 표시할 SSH키의 이름을 지정하십시오.

curl -X GET "$vpc_api_endpoint/v1/keys/$id?version=2023-03-30&generation=2" -H "Authorization: Bearer $iam_token"

Terraform을 사용하여 SSH키의 세부사항 보기

Terraform을 사용하여 특정 키에 대한 정보를 검색하려면 ibm_is_ssh_keys를 사용하십시오.

name 변수의 경우 세부사항을 표시할 SSH키의 이름을 지정하십시오.

data "ibm_is_ssh_key" "example" {
  name = "example-ssh-key"
}

UI를 사용하여 SSH 키 생성하기

다음 단계를 따라 새 SSH 키를 생성하십시오. RSH SSH키 유형만 작성할 수 있습니다. Ed25519 SSH키를 사용하려면 해당 SSH키를 가져와야 합니다. 자세한 정보는 UI를 사용하여 SSH키 가져오기 를 참조하십시오.

  1. IBM Cloud 콘솔 에서 탐색 메뉴 아이콘메뉴 아이콘 > 인프라 VPC 아이콘 > 컴퓨팅 > SSH 키 으로 이동합니다.
  2. 작성을 클릭하고 표 1에 있는 정보를 입력하십시오.
    Field Value
    위치 위치는 리전(특정 지리적 영역)과 존(리전 내의 내결함성 데이터 센터)으로 구성됩니다. SSH 키를 생성할 위치를 선택하십시오.
    이름 SSH키에 대한 이름이 필요합니다.
    리소스 그룹 SSH 키에 사용할 리소스 그룹을 선택하십시오.
    태그 SSH키 목록을 쉽게 필터링할 수 있도록 SSH키에 사용자 태그를 지정할 수 있습니다. 자세한 정보는 태그 작업 을 참조하십시오.
    액세스 관리 태그 액세스 관리 태그를 사용하면 특정 리소스에 유연한 액세스 정책을 적용할 수 있습니다. 자세한 정보는 태그를 사용하여 리소스에 대한 액세스 제어 UI 학습서를 참조하십시오.
    SSH키 유형 기본값은 rsa 입니다.UI를 사용하여 새 RSA키 쌍을 생성할 수 있습니다. 기존에 생성된 RSA 및 Ed25519 SSH 키를 업로드할 수 있습니다. Ed25519는 운영 체제가 이 키 유형을 지원하는 경우에만 사용할 수 있습니다. Ed25519 Windows 또는 VMware 이미지에서는 사용할 수 없습니다.
  1. '키 쌍을 자동으로 생성해 주세요'를 선택하세요.
  2. 선택적으로 샘플 API 호출 가져오기 를 클릭하여 복사할 수 있는 모든 SSH키 정보가 포함된 API 코드를 가져오십시오.
  3. 작성을 클릭하십시오.

이제 UI의 SSH키 목록에 새 SSH키가 표시됩니다.

UI를 사용하여 SSH키 가져오기

SSH 키는 두 가지 방법으로 가져올 수 있습니다. 로컬 파일에서 공개 키를 업로드할 수 있습니다. 또는 공개 키 정보를 복사하여 UI에 붙여넣을 수 있습니다.

로컬 파일에서 SSH키를 가져오려면 다음 단계를 사용하십시오.

  1. IBM Cloud 콘솔 에서 탐색 메뉴 아이콘메뉴 아이콘 > 인프라 VPC 아이콘 > 컴퓨팅 > SSH 키 으로 이동합니다.
  2. 작성을 클릭하고 표 1에 있는 정보를 입력하십시오.
    Field Value
    위치 위치는 리전(특정 지리적 영역)과 존(리전 내의 내결함성 데이터 센터)으로 구성됩니다. SSH 키를 생성할 위치를 선택하십시오.
    이름 SSH키에 대한 이름이 필요합니다.
    리소스 그룹 SSH 키에 사용할 리소스 그룹을 선택하십시오.
    태그 SSH키 목록을 쉽게 필터링할 수 있도록 SSH키에 사용자 태그를 지정할 수 있습니다. 자세한 정보는 태그 작업 을 참조하십시오.
    액세스 관리 태그 액세스 관리 태그를 사용하면 특정 리소스에 유연한 액세스 정책을 적용할 수 있습니다. 자세한 정보는 태그를 사용하여 리소스에 대한 액세스 제어 UI 학습서를 참조하십시오.
    SSH키 유형 SSH키의 키 유형을 선택하십시오. 기본값은 rsa입니다. ed25519 SSH키 유형은 운영 체제가 이 키 유형을 지원하는 경우에만 인스턴스를 작성하는 데 사용할 수 있습니다. 이 키 유형은 Windows 또는 VMware 이미지에서는 사용할 수 없습니다.
  1. '기존 공개 키 제공'을 선택합니다.
  2. ‘공개 키 업로드’를 클릭합니다.
  3. 공개 키 파일을 선택한 다음 ‘열기’를 클릭하십시오. 파일 확장자 .pub 는 일반적으로 공개 키를 포함하는 파일을 표시합니다.
  4. 선택적으로 샘플 API 호출 가져오기 를 클릭하여 복사할 수 있는 모든 SSH키 정보가 포함된 API 코드를 가져오십시오.
  5. 작성을 클릭하십시오.

터미널에서 SSH 키를 복사하여 VPC에 키를 추가할 때, 때때로 불필요한 줄 바꿈이 삽입되어 구문 분석 오류가 발생할 수 있습니다. 이 문제를 방지하려면 먼저 SSH 키를 텍스트 편집기에 붙여넣은 후 추가적인 행 바꾸기를 모두 제거하십시오. 그런 다음 텍스트 편집기에서 SSH 키를 복사하여 VPC UI, CLI 또는 API에 붙여넣으십시오.

이제 가져온 SSH키가 UI의 SSH키 목록에 표시됩니다.

CLI를 사용하여 SSH키 가져오기

CLI를 사용하여 SSH키를 가져오려면 ibmcloud is key-create 명령을 사용하십시오. 가져오는 파일은 id_rsa.pub 또는 id_ed25519.pub 이며, 여기에는 공개 키가 포함되어 있습니다. KEY_NAME 변수를 사용하여 SSH키의 이름 또는 ID를 지정하고 KEY 변수를 사용하여 가져오는 공용 SSH키를 지정해야 합니다. --key-type 옵션을 사용하여 SSH키 유형을 지정하십시오. 선택적으로 SSH키를 작성할 때 리소스 그룹을 지정할 수 있습니다. RESOURCE_GROUP_ID 또는 RESOURCE_GROUP_NAME 변수를 사용하여 자원 그룹을 지정하십시오. VPC CLI 참조 안내서에서 ibmcloud is key-create 를 참조하십시오.

ibmcloud is key-create KEY_NAME (KEY | @KEY_FILE) [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] [--key-type KEY_TYPE]

API를 사용하여 SSH키 가져오기

API를 사용하여 새 SSH키를 가져오려면 키 작성 을 사용하십시오. 가져오는 파일은 id_rsa.pub 또는 id_ed25519.pub 이며, 여기에는 공개 키가 포함되어 있습니다. API를 사용하여 새 SSH키를 작성할 수 없습니다. 그러나 UI를 사용하여 새 SSH키를 작성하고 UI에서 새 SSH키를 포함하는 데 필요한 API 코드 스니펫을 생성할 수 있습니다. 자세한 정보는 UI를 사용하여 SSH키 작성 을 참조하십시오.

name 특성에 대해 SSH키의 이름을 지정하십시오. public_key 특성의 경우 공개 키 정보를 입력하십시오. type 특성의 경우 SSH키 유형에 대해 rsa 또는 ed25519 를 지정하십시오.

운영 체제가 ‘ Ed25519 ’ SSH 키 유형을 지원하는 경우에만 이 키 유형을 사용하여 인스턴스를 생성할 수 있습니다. 이 키 유형은 Windows 또는 VMware 이미지와 함께 사용할 수 없습니다.

curl -X POST "$vpc_api_endpoint/v1/keys?version=2023-03-30&generation=2" -H "Authorization: Bearer $iam_token" -d '{
      "name":"my-key-1",
      "public_key":"AAAAB3NzaC1yc2EAAAADAQABAAABAQDDGe50Bxa5T5NDddrrtbx2Y4/VGbiCgXqnBsYToIUKoFSHTQl5IX3PasGnneKanhcLwWz5M5MoCRvhxTp66NKzIfAz7r+FX9rxgR+ZgcM253YAqOVeIpOU408simDZKriTlN8kYsXL7P34tsWuAJf4MgZtJAQxous/2byetpdCv8ddnT4X3ltOg9w+LqSCPYfNivqH00Eh7S1Ldz7I8aw5WOp5a+sQFP/RbwfpwHp+ny7DfeIOokcuI42tJkoBn7UsLTVpCSmXr2EDRlSWe/1M/iHNRBzaT3CK0+SwZWd2AEjePxSnWKNGIEUJDlUYp7hKhiQcgT5ZAnWU121oc5En",
      "type":"rsa"
    }'

Terraform을 사용하여 SSH키 가져오기

Terraform을 사용하여 새 SSH키를 가져오려면 ibm_is_ssh_keys를 사용하십시오.

새로운 SSH 키를 가져오려면 다음 단계를 따르십시오.

  1. 필수 값을 사용하여 ibm_is_ssh_key 의 자원 블록 유형을 작성하십시오. name 속성에 대해 SSH키의 더미 이름을 지정하십시오. public_key 속성의 경우 더미 공개 키 정보를 입력하십시오.

    resource "ibm_is_ssh_key" "example_sshkey" {
      name = "my-key"
      public_key = "public-key"
    }
    
  2. 리소스를 작성한 후 다음 Terraform 명령을 실행하여 SSH키를 가져오십시오.

    terraform import ibm_is_ssh_key.example_sshkey d7bec597-4726-451f-8a63-e62e6f19c32c
    
  1. 상태와 일치하도록 구성을 개선하십시오. 자원 블록을 대체하지 않으려면 자원 블록 세부사항을 복사하십시오.

 ```terraform {: codeblock}
 resource "ibm_is_ssh_key" "example_sshkey" {
    name       = "example-sshkey"
    public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVERRN7/9484SOBJ3HSKxxNG5JN8owAjy5f9yYwcUg+JaUVuytn5Pv3aeYROHGGg+5G346xaq3DAwX6Y5ykr2fvjObgncQBnuU5KHWCECO/4h8uWuwh/kfniXPVjFToc+gnkqA+3RKpAecZhFXwfalQ9mMuYGFxn+fwn8cYEApsJbsEmb0iJwPiZ5hjFC8wREuiTlhPHDgkBLOiycd20op2nXzDbHfCHInquEe/gYxEitALONxm0swBOwJZwlTDOB7C6y2dzlrtxr1L59m7pCkWI4EtTRLvleehBoj3u7jB4usR"
    type = "rsa"
 }

CLI를 사용하여 SSH키 업데이트

ibmcloud is key-update 명령을 사용하여 기존 키를 업데이트할 수 있습니다. 기존 키를 업데이트하면 키의 이름이 즉시 바뀝니다. 자세한 정보는 ibmcloud is key-delete 를 참조하십시오. KEY 변수를 사용하여 현재 SSH키 이름을 지정하고 --name 옵션에서 NEW_NAME 변수를 사용하여 새 SSH키 이름을 모두 지정해야 합니다.

```sh {: pre}

ibmcloud is key-update KEY [--name NEW_NAME]

## API를 사용하여 SSH 키 업데이트하기 {: #updating-ssh-keys-api api}

API를 사용하여 기존 SSH키를 업데이트하려면 [키 업데이트](/docs/apis/vpc/latest#update-key) 를 사용하십시오. 기존 키를 업데이트하면 키의 이름이 즉시 바뀝니다.

`$id` 변수의 경우 SSH키의 현재 이름을 지정하십시오. `name` 특성에 대해 SSH키의 새 이름을 지정하십시오.

  ```sh {: pre}
curl -X PATCH "$vpc_api_endpoint/v1/keys/$id?version=2023-03-30&generation=2" -H "Authorization: Bearer $iam_token" -d '{ "name": "my-key-1-updated" }'

Terraform을 사용하여 SSH키 업데이트

Terraform을 사용하여 기존 SSH키를 업데이트하려면 ibm_is_ssh_keys를 사용하십시오. 기존 키를 업데이트하면 키의 이름이 즉시 바뀝니다.

1. SSH키 자원 블록을 업데이트하십시오. `name` 특성에 대해 SSH키의 새 이름을 지정하십시오.
   resource "ibm_is_ssh_key" "example_sshkey" {
   name       = "new-example-sshkey"
   public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVERRN7/9484SOBJ3HSKxxNG5JN8owAjy5f9yYwcUg+JaUVuytn5Pv3aeYROHGGg+5G346xaq3DAwX6Y5ykr2fvjObgncQBnuU5KHWCECO/4h8uWuwh/kfniXPVjFToc+gnkqA+3RKpAecZhFXwfalQ9mMuYGFxn+fwn8cYEApsJbsEmb0iJwPiZ5hjFC8wREuiTlhPHDgkBLOiycd20op2nXzDbHfCHInquEe/gYxEitALONxm0swBOwJZwlTDOB7C6y2dzlrtxr1L59m7pCkWI4EtTRLvleehBoj3u7jB4usR"
   type = "rsa"
}
1. `terraform apply` 를 실행하여 새 이름으로 자원을 업데이트하십시오.

CLI를 사용하여 SSH 키 삭제하기

CLI를 사용하여 하나 이상의 SSH키를 삭제하려면 ibmcloud is key-delete 명령을 사용하십시오. 자세한 정보는 ibmcloud is key-delete 를 참조하십시오. KEY 변수를 사용하여 삭제하는 각 SSH키의 이름을 지정하십시오.

```sh {: pre}

ibmcloud is key-delete (KEY1 KEY2 ...)

## API를 사용하여 SSH 키 삭제하기 {: #deleting-ssh-keys-api api}

API를 사용하여 하나 이상의 SSH키를 삭제하려면 [키 삭제](/docs/apis/vpc/latest#delete-key) 를 사용하십시오.

`$id` 변수의 경우 삭제할 SSH키의 이름을 지정하십시오.

  ```sh {: pre}
curl -X DELETE "$vpc_api_endpoint/v1/keys/$id?version=2023-03-30&generation=2" -H "Authorization: Bearer $iam_token"

Terraform을 사용하여 SSH키 삭제

Terraform을 사용하여 SSH키를 삭제하려면 ibm_is_ssh_keys를 사용하십시오.

example_sshkey 속성의 경우, 이를 삭제할 SSH키로 대체하십시오.

terraform destroy --target ibm_is_ssh_keys.example_sshkey