SSH認可

SSHを使用してリポジトリをクローニングする方法について学習します。

SSH鍵を使用してリポジトリをクローニングするには、SSH鍵ペアが必要です。IAMユーザーまたはフェデレーテッド・ユーザーにできます。IAMユーザーはドメインの一部にできます。アイデンティティ・ドメインは、ユーザーおよびロールを管理するためのコンテナです。

SSH認証の設定

  1. SSHキー・ペアを生成します。OpenSSHキー・ペアまたはOCI API署名キーを使用できます。
    ノート

    すでにSSHキー・ペアがある場合は、同じものを使用できます。デフォルトでは、SSH鍵はシステムの~/.SSHディレクトリに格納されます。

    SSH鍵ペアを生成するには、次の手順に従います。

    1. ターミナル・ウィンドウを開きます。
    2. 次のコマンドを入力します。

      ssh-keygen -t rsa -C "<user.alias>@"
    3. プロンプトが表示されたら、デフォルト値を受け入れます。
    4. このコマンドは、SSHで使用する3072ビットのRSA鍵を作成します。
    5. セキュリティを求められたら、秘密キーのパスフレーズを指定できます。
    6. このコマンドにより、SSH認証に必要な2つのキーとして秘密キー(id_rsa)と公開キー(id_rsa.pub)が生成されます。秘密キーはセキュアに保持し、共有しないでください。
  2. 公開キー・ファイルの内容をコピーします
    OpenSSH書式キーを使用している場合は、次のコマンドを使用します。
    ssh-keygen -f ~/.ssh/id_rsa.pub -e -m pkcs8 | pbcopy
    OCI API署名キーを使用している場合は、次のコマンドを使用します:
    cat ~/.oci/oci_api_key_public.pem | pbcopy
  3. 公開キーをOCIにアップロードし、IAMユーザーに関連付けます。次のステップに従います:
    1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ユーザー」をクリックします。テナンシ内のユーザーのリストが表示されます。
    2. Gitサービス認証に使用するユーザーを選択します。
    3. 左側のメニューの「リソース」にある「APIキー」をクリックします。
    4. 「APIキーの追加」ボタンをクリックし、「公開キーの貼付け」オプションを選択して、公開キーのコンテンツを貼り付けます。
    5. 「追加」ボタンをクリックします。

Git操作の設定

OpenSSH構成ファイルでGitユーザー名を設定するか、SSH URLにGitユーザー名を埋め込むことができます。

  1. OpenSSH構成ファイルでGitユーザー名を設定するには、次のステップに従います。
    1. ~/.ssh/configファイルがデフォルトの場所に存在するかどうかを確認します。
      open ~/.ssh/config
    2. このファイルが存在しない場合は、ファイルを作成します。
      touch ~/.ssh/config
    3. SSH構成ファイル~/.SSH/configを編集して、git clone操作に使用するユーザーおよびキーを指定する必要があります。構成ファイルのホスト・エントリのフォーマットは:
      
      Host <CodeRepositoryHost>
        User <userName>@<tenancyName>
        IdentityFile  <PathToYourSSHPrivateKey>
      ドメインのIAMユーザー部分のファイル形式は次のとおりです。
      Host <CodeRepositoryHost>
        User <domainName>/<userName>@<tenancyName>
        IdentityFile  <PathToYourSSHPrivateKey>
      SSHユーザーは、ログイン・ユーザー名とテナンシ名の組合せです。たとえば、フェデレーテッド・ユーザーを使用している場合、コード・リポジトリのGit用SSHユーザーはFederation/userName@tenancyNameです。このユーザー文字列で:
      • Federationはオプションで、フェデレーテッド・アイデンティティ・プロバイダです。
      • userNameは、OCIコンソールにサインインするユーザーです。
      • tenancyNameは、OCIコンソールで確認できるテナンシの名前です。
      例: oracleidentitycloudservice/the-product-manager-user@my-tenancy
      SSHユーザー文字列は、URLエンコードまたはエスケープする必要はありません。たとえば、アッシュバーン・リージョンのコード・リポジトリのホスト構成エントリは:
      Host devops.scmservice.us-ashburn-1.oci.oraclecloud.com
          User the-product-manager-user@my-tenancy
          IdentityFile ~/.ssh/id_rsa

      すべてのOCIリージョンで、ホストにワイルドカードを使用できます(例: Host devops.scmservice.*.oci.oraclecloud.com)。

  2. SSH URLでGitユーザー名を設定するには、次のステップに従います。
    1. SSH URLにGitユーザー名を追加します。
      ssh://<userName>@<tenancyName>@<sshUrl>
      ドメイン内のユーザーのSSH URL:
      ssh://<domainName>/<userName>@<tenancyName>@<sshUrl>
    2. SSH秘密キーをSSH-agentに追加し、パスフレーズをキーチェーンに格納します。
      ssh-add -K ~/.ssh/id_rsa

リポジトリのクローニング

  1. ローカル・マシンのコマンドラインで、作業ディレクトリの場所を、リポジトリをクローニングする場所に変更します。
  2. リポジトリをクローニングするには、クラウド・コンソールからコピーしたSSH URLを指定してgit cloneコマンドを実行します。

    例: git clone ssh://devops.scmservice.us-ashburn-1.oci.oraclecloud.com/namespaces/MY-TENANCY/projects/PROJECT-NAME/repositories/REPO-NAME