IBM Cloud Docs
SSH 鍵の生成

SSH 鍵の生成

仮想サーバーを作成するためには、秘密 SSH 鍵と公開 SSH 鍵のペアを用意する必要があります。 既存の SSH 鍵ペアを再使用することも、新しいペアを生成することもできます。 既存の OpenSSH 鍵ペアを、 PuTTY 用として再利用することもできます。

  • 公開鍵は、新しい仮想サーバーの作成時に入力として必要になります。
  • 秘密鍵は、仮想サーバーへのログイン時に必要になります。 これは、クライアント・ワークステーション上でシークレットとして保持しておきます。

SSH 鍵のこのペアは、クライアントと新規サーバーの間の認証に使用されます。

SSH 鍵を生成するための以下の暗号アルゴリズムが Hyper Protect Virtual Servers でサポートされています。

  • ssh-rsa (デフォルト)
  • ssh-ed25519
  • ecdsa-sha2-nistp256
  • ecdsa-sha2-nistp384
  • ecdsa-sha2-nistp521

コマンドによる SSH 鍵の生成

以下にリストしたオペレーティング・システムのコマンド・ラインから SSH 鍵ペアを作成する方法は、いずれのオペレーティング・システムでもほぼ同じです。

  • Linux
  • Windows Subsystem for Linux (WSL)
  • Git Bash を使用している Windows
  • Windows 10
  • macOS

新しい認証鍵ペアを SSH に使用する必要がある場合、または使用したい場合は、コマンド・ラインから ssh-keygen ツールを実行します。 鍵ファイル名とパスフレーズの選択 (オプション) を求めるプロンプトが出されます。

ここに示すサンプル命令は、以下のどれからでも入力できます。

  • Windows の Git Bash セッション
  • Windows 10 セッション
  • Linux セッション
ssh-keygen
ssh-keygen -t rsa
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

-t-b-C の各パラメーターはオプションです。

  • -t: 鍵のタイプを指定します。 デフォルトは -t rsa です。
  • -b: 鍵のサイズをビット単位で指定します。 デフォルトのサイズは 2048 ビットです。
  • -C コメントを追加します。

したがって、引数なしで ssh-keygen を呼び出した場合は、どちらの鍵もサイズが 2048 ビットの RSA 鍵ペアがコマンドによって生成されます。

-tssh-keygen ** ツールで ** パラメーターを使用することによって、サポートされている暗号アルゴリズムの中から選択できます。

表 1. サポートされる暗号アルゴリズム
アルゴリズム コマンド
ssh-rsa ssh-keygen -t rsa (デフォルト)
ssh-ed25519 ssh-keygen -t ed25519
ecdsa-sha2-nistp256 ssh-keygen -t ecdsa -b 256
ecdsa-sha2-nistp384 ssh-keygen -t ecdsa -b 384
ecdsa-sha2-nistp521 ssh-keygen -t ecdsa -b 521

鍵を保存するためのファイル名を指定しない場合は、デフォルトの名前が使用されます。 秘密 SSH 鍵と公開 SSH 鍵の鍵ペアは、同じ名前の 2 つのファイルに保管されます。 仮想サーバーの作成に必要な公開 SSH 鍵は、拡張子が .pub のファイルに保存されます。 生成される鍵のフォーマットは、生成時に使用された方法やオペレーティング・システムによって異なる場合があります。 仮想サーバーの作成時に入力として入力すると、有効なフォーマットが認識されます。

SSH エージェントへの SSH 秘密鍵の保存

パスフレーズを指定して SSH 鍵ペアを作成した場合は、SSH エージェントに SSH 秘密鍵を追加できます。 SSH エージェントのサポートにより、パスフレーズを再入力することなく、秘密鍵を使用することができます。

このタスクはオプションです。

  • 次のコマンドを実行してください。eval "$(ssh-agent -s)"
  • 注: ご使用のシステムが macOS Sierra 10.12.2 以降の場合は、エージェントに鍵を追加できるように、またエージェントが鍵チェーンを使用してパスフレーズを保管できるように、~/.ssh/config ファイルを以下のように変更する必要があります。
Host *    
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
  • SSH エージェントに SSH 秘密鍵を追加するには、ssh-add ~/.ssh/id_rsa と入力します (mac システムの場合は ssh-add -K ~/.ssh/id_rsa と入力)。 秘密鍵ファイルの名前が異なる場合は、id_rsa をそのファイル名に置き換えてください。

PuTTY Key Generator を使用して Windows から SSH 鍵を生成する

PuTTY Key Generator で、鍵のタイプと鍵のサイズ (例えば 2048 や 4096) を選択します。

PuTTY 鍵生成プログラムを使用した SSH 鍵ペアの生成{: caption="図 1. PuTTY 鍵生成プログラムを使用した SSH 鍵ペアの生成" caption-side =" bottom "}

**「生成する鍵のタイプ」**で適切なオプションをクリックすることによって、 PuTTY Key Generator でサポートされる暗号アルゴリズムの中から 1 つ選択できます。 ECDSA オプションの場合は、プルダウン選択が表示されます。ここで、 「この鍵を生成するために使用する曲線 (Curve to use for generating this key)」 (nistp256nistp384nistp521 のいずれか) をさらに選択する必要があります。

次に、該当するボタン ( **「公開鍵の保存 (Save public key)」**と 「秘密鍵の保存 (Save private key)」) を押して、秘密鍵、および公開鍵 (必要な場合) を別々のファイルに保存する必要があります。 この方法で保存された公開鍵を仮想サーバーの作成に再使用するには、Hyper Protect Virtual Servers で認識される OpenSSH 公開鍵フォーマットを使用する必要があります。

鍵は安全な場所に保管し、鍵のバックアップを取る必要があります。 仮想サーバーのアップグレード・シナリオでは、仮想サーバーの作成に使用された元の鍵を使用して署名する必要があります。

PuTTY の公開 SSH 鍵を使用して仮想サーバーを作成する場合は、以下の選択肢があります。

  • 鍵ペア生成の直後に仮想サーバーを作成するには、 **「鍵」**ボックスから公開鍵をコピーします。 先頭にはストリング「ssh-rsa」を含めてください。また、図 2 に示すように末尾の鍵コメントは削除してください。
  • PuTTY Key Generator ダイアログを既に閉じた後に仮想サーバーを作成するには、OpenSSH 公開鍵フォーマットで保存されているファイル内の公開鍵を使用します。

PuTTY 鍵生成プログラムで生成した SSH 鍵ペアを使用する準備ができました{: caption="図 2. PuTTY 鍵生成プログラムで生成した SSH 鍵ペアを使用する準備ができました" caption-side = "bottom"}

PuTTY から仮想サーバーにログインするために OpenSSH 鍵ペアを変換する

既存の仮想サーバーを PuTTY 構成ユーティリティーに構成して、この仮想サーバーに簡単にログインできるようにするとします。 この仮想サーバーを作成するときには、既存の OpenSSH 鍵ペアを使用しました。 このシナリオでは、既存の OpenSSH 秘密鍵を変換して、 PuTTY 構成からこの仮想サーバーに簡単にログインできるようにする方法を説明します。 この目的のために、関係する OpenSSH 秘密鍵を PuTTY フォーマットに変換する方法を説明します。

  1. **「変換」**から **「鍵のインポート (Import key)」**を選択します。 既存の OpenSSH 秘密鍵ファイルを参照して開きます。

OpenSSH 秘密鍵を PuTTY にインポートする{: caption="図 3. OpenSSH 秘密鍵を PuTTY にインポートする" caption-side =" bottom "}

  1. ファイル・タイプ ** を使用して秘密鍵を **PuTTY.ppk フォーマットで保存します。

    OpenSSH 秘密鍵を PuTTY に変換する{: caption="図 4. OpenSSH 秘密鍵を PuTTY に変換する" caption-side =" bottom "}

  2. ****PuTTY 構成を使用した Windows からのログイン ** の説明に従って、**PuTTY に仮想サーバーを構成します。