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 は、2 つの異なるタイプの 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 鍵の「アクション」アイコン 「その他のアクション」アイコン をクリックし、使用可能なオプションから選択します。
    Action Description
    名前変更 既存の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の再インストールを行う際には、そのSSHキーを使用できなくなります。 ただし、以前にそのキーを使用してプロビジョニングしたインスタンスでは、引き続きそのキーが利用可能であり、それを使ってログインすることができます。

API を使用した SSH 鍵の管理

API を使用して SSH キーを管理することもできます。 以下の例で登場する $vpc_api_endpoint および $iam_token 変数に関する詳細については、『 Virtual Private Cloud 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 コマンドを使用します。

使用可能なすべてのリソース・グループの SSH 鍵をリストするには、 --all-resource-groups オプションを使用します。 オプションで、リストをフィルタリングして、特定のリソース・グループの SSH 鍵のみを含めることができます。 RESOURCE_GROUP_ID 変数または RESOURCE_GROUP_NAME 変数を使用して、リソース・グループを指定します。 詳しくは、 ibmcloud is keys を参照してください。

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

API を使用したすべての SSH 鍵のリスト表示

API を使用してすべての SSH 鍵をリストするには、 「すべての鍵のリスト(List all keys)」 を使用します。

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 鍵に関する以下の詳細を表示できます。

  • 名前
  • リソース・グループ
  • 指紋
  • タイプ
  • Length
  • 作成日 (ローカル)

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 呼び出しの取得 (Get sample API call)」 をクリックして、コピーできるすべての SSH 鍵情報を含む API コードを取得します。
  3. 「作成」 をクリックします。

これで、UI 上の SSH 鍵のリストに新しい SSH 鍵が表示されます。

UI を使用した SSH 鍵のインポート

SSHキーのインポートには、2つの方法があります。 ローカル・ファイルから公開鍵をアップロードできます。 または、公開鍵情報をコピーして 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 呼び出しの取得 (Get sample API call)」 をクリックして、コピーできるすべての 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 を使用して 1 つ以上の 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 を使用して 1 つ以上の SSH 鍵を削除するには、 [Delete a key](/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