ノート:

SSHキーの生成

イントロダクション

SSH (Secure Shell)プロトコルは、あるコンピュータから別のコンピュータへのセキュアなリモートログイン方法です。SSHは、暗号化を使用して、セキュアでないネットワークを介したシステム管理およびファイル転送を利用して、エンドポイント間の接続を保護します。SSHキーは、クラウド内のOracle Cloud Infrastructureコンピュート・インスタンスに安全にアクセスするための重要な部分です。

すでにSSH鍵ペアがある場合は、これを使用して環境に接続できます。Oracle Cloud Shellを使用して、作成するOCIコンピュート・インスタンスとインタフェースすることをお薦めします。Oracle Cloud Shellはブラウザベースであり、ラップトップ上で何もインストールおよび構成する必要がなく、ネットワーク設定とは無関係に動作します。ただし、ラップトップを介して接続する場合は、設定に基づいてオプションを選択してください。

重要: SSHキーが正しく作成されていない場合は、環境に接続できないため、エラーが発生します。鍵を正しく作成してください。

オプション1: Oracle Cloud Shell

「Generate SSH Keys Cloud Shell」オプションの概要については、次のビデオを参照してください。

Cloud Shellマシンは、OCIコンソール(ホームページ)からアクセスするBashシェルを実行する、小さな仮想マシンです。クラウド・シェルには、事前認証済のOCI CLI (コマンドライン・インタフェース)が付属しています。コンソール・テナンシのホーム・ページ領域に設定され、最新のツールおよびユーティリティも用意されています。クラウド・シェル・マシンを使用するには、テナンシ管理者が必要なIAM (Identity and Access Management)ポリシーを付与する必要があります。

  1. Oracle Cloudシェルを起動するには、クラウド・コンソールに移動し、ページの右上にあるクラウド・シェル・アイコンをクリックします。

  2. クラウド・シェルが起動したら、次のコマンドを入力します。覚えておくことができるキー名を選択します。これは、作成するコンピュート・インスタンスへの接続に使用するキー名です。パスフレーズなしでEnterを2回押します。

    mkdir .ssh
    cd .ssh
    ssh-keygen -b 2048 -t rsa -f <<sshkeyname>>
    

    ノート:角カッコ「」はコードに表示されません。

  3. 作成した2つのファイルを調べます。

    ls
    

    出力には、秘密キー: <<sshkeyname>>および公開キー: <<sshkeyname>>.pubという2つのファイルがあることに注意してください。秘密鍵を安全に保管し、そのコンテンツを誰にも共有しない。公開鍵は様々な活動に必要であり、クラウド内の安全な通信を促進するために、特定のシステムにアップロードしたり貼り付けたりできます。

  4. 公開キーの内容をリストするには、catコマンドcat <<sshkeyname>>.pubを使用します

    ノート:角カッコ「」はコードに表示されません。

  5. 以降の演習でコンピュート・インスタンスにキーを貼り付ける場合は、コピー時に追加したハード・リターンを削除するようにしてください。.pubキーは1行にする必要があります。

オプション2: MacOS

「Generate SSH Keys Mac」オプションの概要については、次のビデオを参照してください。

  1. MacOSのターミナル・アプリケーションへのショートカットがまだない場合は、キーボードの「アプリケーション」「ユーティリティ」メニューまたは(Shift+Command+U)で検索できます。

  2. Terminalを起動し、コマンドssh-keygenを入力します。ssh-keygenは、キーの保存場所を求め、Enterキーを押してホーム・ディレクトリ内のデフォルトの.sshフォルダを受け入れます。ファイル名は、id_rsaまたはキーに名前を付けることを選択します。パスフレーズなしでEnterを2回押します。キーを保存したディレクトリ(~/.ssh)を覚えておいてください。このディレクトリは、後でインスタンスを作成するときに参照する必要があります。

    ssh-keygen
    

  3. ターミナル・ウィンドウで次のコマンドを入力して、公開キーと秘密キーが作成されたことを確認し、OCIダイアログでインスタンスを作成する際に使用する公開キーの内容をコピーします。

    cd .ssh
    ls
    cat id_rsa.pub
    

    出力には、秘密キー: id_rsaおよび公開鍵: id_rsa.pubの2つのファイルがあることに注意してください。秘密鍵を安全に保管し、そのコンテンツを誰にも共有しない。公開鍵は様々な活動に必要であり、クラウド内の安全な通信を促進するために、特定のシステムにアップロードしたり貼り付けたりできます。

  4. インスタンスを作成する準備ができた場合は、SSH鍵の入力を求められたら、内容をコピーして貼り付けます。コピー時に追加された可能性のあるハード リターンを削除するようにしてください。

MacOSターミナル・ユーザー・ガイドをクリックして

オプション3: Windows 10

「SSHキーの生成」ウィンドウ・オプションの概要については、次のビデオを参照してください。

ssh-keygenはWindows 10のリリースまでWindows用のネイティブ・ユーティリティではないため、Windows用のキーの作成は興味深い場合があります。最初のWindows 10ビルドに含まれていませんでした。

  1. Windows 10システムでPowershellコマンド・ウィンドウを開くには、そのアイコン/タイルをクリックするか、または開始バーの検索フィールドに「powershell」と入力します。

  2. ターミナル・ウィンドウにコマンドssh-keygenを入力します。後でファイルを特定できるように、ファイルの保存場所に注意してください。ssh-keygenは、ユーザーのベース・ディレクトリの下にある標準の.sshディレクトリにデフォルト設定されます。

    ssh-keygen
    
  3. すべてのプロンプトでEnterキーを押すと、デフォルトの場所、デフォルトのファイル名、およびパスフレーズは受け入れられません。

    ノート: Unixのバリアントでは、ドット(.)が前のフォルダが構成ファイルに指定され、通常の表示では非表示になっています。ただし、ドット(.)はWindowsフォルダの前に特別な意味を持ちません。そのため、フォルダは存在しますが、非表示にはなりません。

  4. キーが存在し、正しく作成されたことを確認します。Powershellウィンドウで次のコマンドを入力します。

    cd .ssh
    ls
    cat id_rsa.pub
    

    これで、SSHキー・ペアが動作し、クラウド内のインスタンスへのセキュアな通信に使用できます。何をしているかを理解していないかぎり、秘密キーid_rsaを誰と共有しないでください。公開キーid_rsa.pubを共有およびコピーするだけで済みます。

  5. また、キーの内容をコピーしてラボの特定のダイアログに貼り付ける場合は、Powershell、エクスプローラまたはその他のディレクトリ・ツールを使用してWindowsでファイルを検索し、公開キー・ファイルを開いてコンテンツをコピーする必要があります。次の例では、Powershellを使用してコンテンツをcatしています。マウスを使ってテキストを選択できますが、コピー/貼り付けコマンドは使用できません。<ctrl-c>を使用して、コンテンツをクリップボードにコピーし、他のアプリケーション・ダイアログに貼り付けます。

    または、メモ帳、ワードパッド、またはその他のテキスト エディタでファイルを開くことができます。

    ノート: MS Wordやリッチ・テキスト・エディタは、キーが使用不可になる追加の書式設定文字を追加するため、使用しないでください。

オプション4:以前のWindowsバージョン

Gitの使用

以前のバージョンのWindowsでは、ssh-keygenはネイティブ・ユーティリティではないため、サード・パーティのユーティリティを使用する必要があります。この項では、Git for Windowsの使用について説明します。Git for Windowsには、キーの作成やクラウド・ホスト・システムとのSSH通信の確立に使用するGit BashというUnixのようなシェルが含まれています。PuTTYを希望する場合は、次のセクションに進みます。

  1. インストールされていない場合は、次のリンクにアクセスしてアプリケーションをダウンロードします。権限の問題が原因でラップトップに何もインストールできない場合は、前述のOracle Cloud Shellオプションを使用してください。

    ここをクリックしてGit for Windowsをダウンロードします

  2. インストールの手順に従います。

    ノート: Git for Windowsのインストールはこの演習の範囲外です。

  3. インストールしたら、GitのWindowsスタート・メニューにGit Bashコマンドを含めるエントリが必要です。「Git Bash」コマンドをクリックします。

  4. ターミナル・ウィンドウにssh-keygenと入力します。Enterキーを押して、デフォルトの場所(~/.ssh)とデフォルトのファイル名(id_rsa)と <Enter>を、パスフレーズなしで2回受け入れます。

    ssh-keygen
    

    ノート:ここでは、Git BashがシミュレートされたUnixホーム・ディレクトリを使用することがよくあります。キーを表示、取得またはコピーするには、Windowsディレクトリ構造に移動する必要があります。

  5. まず「up」をルートC:ディレクトリにナビゲートします。

    cd c:
    

    次に、通常のホーム・ディレクトリの.sshフォルダに「down」ナビゲートします。

    cd Users/<your home folder name>/.ssh/
    

    ノート:コードに角括弧<>は表示されません。

    ls
    

    出力には、秘密キー: id_rsaおよび公開鍵: id_rsa.pubの2つのファイルがあることに注意してください。秘密鍵を安全に保管し、そのコンテンツを誰にも共有しない。公開鍵は様々な活動に必要であり、クラウド内の安全な通信を促進するために、特定のシステムにアップロードしたり貼り付けたりできます。

  6. SSH公開鍵ファイルと秘密鍵ファイルがどこにあるかを記録します。ファイルをアップロードするか、Oracle Cloud Services用の他のラボでコンテンツをコピー/貼り付けするよう求められる場合があります。キー・コンテンツを正確にコピーし、キー文字の後にスペースを取得するとキーが無効になる場合があります。次の例では、gitbash catコマンドを使用して、公開キー・ファイルのコンテンツを表示できます。キー・ファイルの内容を選択して右クリックし、「コピー」できます。または、ファイルを直接アップロードできます。

    ノート: Git for Windowsをすでにインストールしている場合は、PuTTYを気にしないでください。キー生成およびターミナル・アクセスに使用するユーティリティを選択しています。

PuTTYを使用します

以前のバージョンのWindowsでは、ssh-keygenはネイティブ・ユーティリティではないため、サード・パーティのユーティリティを使用する必要があります。このセクションでは、PuTTYの使用について説明します。Git for Windowsを好む場合は、このオプションの前にアクセスしてください。

  1. インストールされていない場合は、次のリンクにアクセスしてアプリケーションをダウンロードします。Oracle従業員の場合、PuTTYMyDesktopアプリケーションを介して内部的にダウンロードすることもできます。Oracle以外の従業員および顧客の場合は、次のリンクを使用します。権限の問題が原因でラップトップに何もインストールできない場合は、前述のOracle Cloud Shellオプションを使用してください。

    ここをクリックしてWindows用のPuTTYをダウンロードします

  2. インストールの手順に従います。

    ノート: PuTTYのインストールはこの演習ドキュメントの範囲を超えています。

    インストール後は、Windowsの「スタート」メニューに入力し、場合によってはPuTTYのデスクトップ・ショートカットが必要です。PuTTYは、実際にはセキュアな通信ユーティリティ・スイートです。これら2つのうち、端末アクセス用のPuTTYユーティリティと、セキュアなSSH鍵を生成するためのPuTTYgenユーティリティを使用します。

  3. Windowsの起動メニューを開き、PuTTYフォルダに移動します。PuTTYgenユーティリティを選択します。

  4. デフォルトが選択され、鍵タイプが2048ビットのRSAセットになっていることを確認します。「Generate」ボタンをクリックします。

  5. 指示に従い、空の灰色領域にマウスを移動してランダムな情報を生成します。PuTTYはその情報を使用して、ランダムでセキュアなSSHキーを生成します。

  6. 次の画面で、PuTTYはマウス情報を取得し、キーを作成しました。ここでは、他の主要な生成方法とは少し異なる複数の処理を行う必要があります。OCIインスタンスのファイルは実際には使用できませんが、今後の参照のためにキーを保存します。「公開キーの保存」ボタンをクリックします。

    ノート: PuTTYは、OpenSSH互換形式でキーを保存しません。したがって、OpenSSHを使用してPuTTYで作成された公開キー・ファイルをLinux/Unixシステムにアップロードすると、キーは正しく読み取られません。ただし、PuTTYgenアプリケーションから直接コピーすると、キー情報自体は、貼り付けされたフィールドに対して正しく動作し、その情報を使用して適切なOpenSSH互換キーを作成します。たとえば、OCIでインスタンスを作成する場合は、PuTTYからSSHキーを貼り付け、正常に動作します。

  7. 「Save public key as:」ダイアログで、キーに名前を付け、ファイル名に.pub拡張子を追加します。また、ファイルをWindowsユーザー名/フォルダ構造にある共通の.sshフォルダに保存すると便利です。この例では、キー・ファイルはC:\Users\<username>\.sshディレクトリにアクセスできます。将来の参照しやすいように、ここにキーを保存します。

  8. 次に、秘密キーを保存する必要があります。「秘密キーの保存」ボタンをクリックし、「はい」と答えて、パスフレーズを使用しない保存に関する警告を表示します。

  9. キーに名前を付け、.ppk拡張子で保存されたことを確認して、ファイルを秘密キー・ファイルとして識別します。秘密キーは誰にも共有しないでください。

  10. 後で参照するためにキーを保存しました。これを行うのは、PuTTYダイアログからキー情報をコピーすることだけです。

  11. ダイアログ・ボックスでキー・テキストを開始から終了まで選択し、右クリックして「コピー」を選択します。その後、キーをメモ帳に貼り付けるか、OCIコンソールのインスタンス作成ダイアログに直接貼り付けることができます。

  12. 次に、OCIインスタンス作成フォームのSSHキーの追加- SSHキーの貼付けダイアログの例を示します。

    これで、PuTTYを使用してWindows 10より前のバージョンのWindows用のSSHキー・ペアを生成するセクションが終わります。

    PuTTYターミナルを使用してSSH経由でクラウド・インスタンスに接続するには、次の手順に従います。

PuTTYを使用したインスタンスへの接続

  1. Windowsの「スタート」メニューからPuTTYユーティリティを開きます。ダイアログ・ボックスで、OCI ComputeインスタンスのIPアドレスを入力します。これは、「OCIコンソール」→「コンピュート」→「インスタンス」→「インスタンスの詳細」画面から取得できます。

  2. 「カテゴリ」「接続」を選択し、「データ」フィールドを選択します。割り当てられたインスタンスのユーザー名を入力します。OCIインスタンスはデフォルトでユーザー名opcになります。opcと入力します。

  3. 「カテゴリ」で、「接続」 - 「SSH」にナビゲートし、「認証」カテゴリを選択します。「参照」ボタンをクリックし、前のステップで作成したprivate key fileを見つけます。「開く」ボタンをクリックして、クラウド・インスタンスへのSSH接続を開始します。

  4. 「はい」をクリックして、キャッシュされていないキーに関するセキュリティ・アラートをバイパスします。

  5. 接続に成功しました。これで、OCI Cloudインスタンスに安全に接続されました。

    これで、PuTTYターミナル・ユーティリティを使用して安全に接続できます。将来の使用のために接続情報を保存し、独自のカスタム設定でPuTTYを構成できます。

    ノート: PuTTYをすでにインストールしている場合は、Git for Windowsを気にしないでください。キー生成およびターミナル・アクセスに使用する選択肢です。

    PuTTYの使用の詳細は、次を参照してください。

オプション5: LinuxのSSHキー

  1. ターミナル・ウィンドウを開き、ssh-keygenコマンドを入力します。ssh-keygenユーティリティには、いくつかのコマンドライン・オプションがありますが、演習で使用する迅速でダーティなキーの作成には、オプションは必要ありません。端末ウィンドウでssh-keygen --helpと入力すると、使用可能なすべてのオプションが表示されます。今は、単独でコマンドを実行します。

    ssh-keygen
    
  2. このコマンドはホームディレクトリから実行してください。この場合、user-id opcとなります。このダイアログはデフォルトで非表示ディレクトリ~/.sshになります。キーがまだ作成されていない場合は、[Enter]キーを押して、デフォルトのファイル名id_rsaを受け入れます。Enterキーを2回押して、パスフレーズなしで鍵を作成します。本番環境でのベスト・プラクティスは、セキュアなパスフレーズを使用することです。ただし、これらの演習ラボでは考慮する必要はありません。

    ダイアログには、キー・ペアが/home/username/.sshディレクトリに保存され、すぐに使用できることが示されます。

  3. .sshディレクトリに移動し、キーをリストして確認します。

    cd .ssh
    ls
    

    出力には、秘密キー: id_rsaおよび公開鍵: id_rsa.pubの2つのファイルがあることに注意してください。秘密鍵を安全に保管し、その内容を誰にも共有しないでください。公開鍵は様々な活動に必要であり、クラウド内の安全な通信を促進するために、特定のシステムにアップロードしたり貼り付けたりできます。

  4. Linux catコマンドを使用して、id_rsa.pubの内容をリストします。

    cat id_rsa.pub
    

  5. 一部のラボでは、通信を容易にするために、公開キーをインスタンスにアップロードまたはコピー(rcp)するように求められます。そのため、ファイルを保持する場所を覚えておいてください。他のラボでは、セキュアな接続を促進するために、様々なダイアログ・ボックスに貼り付けるキーの「内容」を要求します。catコマンドを使用して、「ssh-rsa」という単語で始まるキーから情報をコピー/貼り付け、行の最終文字まですべてをコピーします。次の例では、"ssh-rsa ... "から"... -01"の直後にコピーします。キーの内容を正確にコピーし、キー文字の後にスペースを取り込んでキーが無効になることがあります。

    公開/秘密のSSH鍵ペアを作成し、SSH鍵を必要とするOracle OCIラボで利用できます。

    興味がある場合は、ここをクリックしてSSHの詳細を確認します。これは、先ほど作成したSSH鍵を使用したLinuxインスタンスからの接続を開始する簡単なチュートリアルです。

謝辞

その他の学習リソース

docs.oracle.com/learnのその他のラボを確認するか、Oracle Learning YouTubeチャネルでより無料の学習コンテンツにアクセスします。また、education.oracle.com/learning-explorerにアクセスしてOracleラーニング・エクスプローラになることもできます。

製品ドキュメントは、Oracleヘルプ・センターを参照してください。