SSH アクセスの多要素認証を有効にする

セキュリティを強化するために、Adobe Commerce on Cloud Infrastructure では、クラウド環境への SSH アクセスの認証要件を管理するための多要素認証(MFA)の適用を提供しています。

プロジェクトで MFA が有効な場合、SSH アクセスを持つすべてのユーザーアカウントは、環境にアクセスするために、二要素認証(TFA)コードまたは API トークンと SSH 証明書のいずれかを必要とします。

NOTE
クラウドプロジェクトでは、MFA はデフォルトでは有効になっていません。 クラウドインフラストラクチャプロジェクト上のAdobe Commerceのアカウント所有者は、 Adobe Commerce サポートチケットを送信 有効にします。 MFA が有効な場合、プロジェクト環境に SSH でアクセスするには、すべてのユーザーがAdobe Commerce on cloud infrastructure アカウントで二要素認証(TFA)を有効にする必要があります。

SSH アクセス用の証明書

MFA を使用すると、Adobe Cloud Certifier API で生成された短期間有効な SSH 証明書と OAUTH アクセストークンを交換できます。 ユーザーが管理者または投稿者のロール、有効な SSH キー、有効な TFA コードまたは API トークンを持っている場合、クラウドインフラストラクチャー上のAdobe Commerceはこれらの資格情報を使用して一時的な SSH 証明書を生成します。 証明書の有効期限は 1 時間に設定されていますが、現在のセッション中に自動更新されます。

MFA を使用してプロジェクトにログインした後、 magento-cloud SSH 証明書を生成するための CLI:

magento-cloud ssh-cert:load

この ssh-cert:load コマンドは、SSH 証明書を生成して、ローカル ユーザーの SSH エージェントにインストールします。

ログイン時に証明書を自動生成

への認証時に SSH 証明書を自動的に生成するように、ローカル環境を設定することができます magento-cloud CLI。

SSH 証明書の自動生成をに追加するには magento-cloud CLI 設定:

  1. ローカルワークステーションで、という名前のファイルを作成します。 config.yaml が含まれる .magento-cloud ホームディレクトリのフォルダー(存在しない場合)。

    code language-bash
    touch ~/.magento-cloud/config.yaml
    
  2. 次の設定をに追加します config.yaml ファイル。

    code language-yaml
    api:
       auto_load_ssh_cert: true
    
  3. の使用 magento-cloud 再認証する CLI:

    ログアウト:

    code language-bash
    magento-cloud logout
    

    ログイン:

    code language-bash
    magento-cloud login
    

    次の応答に従います。

    code language-terminal
    Please open the following URL in a browser and log in:
    http://127.0.0.1:5000
    
    Help:
      Leave this command running during login.
      If you need to quit, use Ctrl+C.
    
      To log in using an API token, run: magento-cloud auth:api-token-login
    
    Login information received. Verifying...
    You are logged in.
    
    Generating SSH certificate...
    A new SSH certificate has been generated.
    It will be automatically refreshed when necessary.
    The certificate is included in your SSH configuration: /Users/<user-name>/.ssh/config
    

SSH と TFA を使用した環境への接続

プロジェクトで MFA を有効にする場合、SSH を使用してリモート環境に接続するには、アカウントで TFA を有効にしておく必要があります。 参照: TFA を有効にする.

recommendation-more-help

前提条件:

MFA 適用が有効なプロジェクトの場合、SSH アクセスには次の権限とアカウント設定が必要です。

SSH と TFA ユーザーアカウント資格情報を使用して接続するには:

  1. へのログイン アカウント.

  2. ローカルワークステーションでは、を使用します。 magento-cloud SSH 証明書を生成するための CLI。

    code language-bash
    magento-cloud ssh-cert:load
    

    応答の例:

    code language-terminal
    Generating SSH certificate...
      Expires at: 2020-07-13T15:28:13-04:00
      Multi-factor authentication: verified
      Mode: interactive
    The certificate will be automatically refreshed when necessary.
    Checking SSH configuration file: /Users/<user-name>/.ssh/config
    Do you want to update the file automatically? [Y/n] Y
    Configuration file updated successfully: /Users/<user-name>/.ssh/config
    
  3. SSH を使用してリモート環境に接続します。

    code language-bash
    ssh abcdef7uyxabce-master-7rqtwti--mymagento@ssh.us-5.magento.cloud
    
    code language-terminal
     __  __                   _          ___ _             _
    |  \/  |__ _ __ _ ___ _ _| |_ ___   / __| |___ _  _ __| |
    | |\/| / _` / _` / -_) ' \  _/ _ \ | (__| / _ \ || / _` |
    |_|  |_\__,_\__, \___|_||_\__\___/  \___|_\___/\_,_\__,_|
                |___/
    
     Welcome to Magento Cloud.
    
     This is environment master-7rqtwti
     of project abcdef7uyxabce.
    
    web@mymagento.0:~$
    

SSH と TFA を使用したソースコードの管理

クラウドインフラストラクチャプロジェクト上のAdobe Commerceのソースコードを管理する場合は、SSH を使用してプロジェクトの Git リポジトリに対する認証を行います。 プロジェクトで MFA 適用が有効になっている場合は、Git リポジトリを使用してコマンドライン操作を実行する前に、SSH 証明書を生成する必要があります。

SSH と TFA ユーザーアカウント資格情報を使用して接続するには:

  1. へのログイン アカウント TFA を使用して認証します。

    note note
    NOTE
    アカウントで TFA が有効になっていない場合は、有効にする必要があります。 参照: クラウドアカウントでの TFA の有効化.
  2. ローカルワークステーションでは、を使用します。 magento-cloud SSH 証明書を生成するための CLI。

    code language-bash
    magento-cloud ssh-cert:load
    

    応答の例:

    code language-terminal
    Generating SSH certificate...
      Expires at: 2020-07-13T15:28:13-04:00
      Multi-factor authentication: verified
      Mode: interactive
    The certificate will be automatically refreshed when necessary.
    Checking SSH configuration file: /Users/<user-name>/.ssh/config
    Do you want to update the file automatically? [Y/n] Y
    Configuration file updated successfully: /Users/<user-name>/.ssh/config
    
  3. プロジェクト環境の Git リポジトリのクローンを作成します。

    code language-bash
    git clone --branch integration abcdef7uyxabce@git.us-3.magento.cloud:abcdef7uyxabce.git myproject
    

    応答の例:

    code language-terminal
    Cloning into 'myproject'...
    Connection to git.us-3.magento.cloud port 22 [tcp/ssh] succeeded!
    remote: counting objects: 22, done.
    Receiving objects: 100% (22/22), 82.42 KiB | 16.48 MiB/s, done.
    

SSH と API トークンを使用した環境への接続

プロジェクトで MFA が有効な場合、クラウド環境への SSH アクセスを必要とする自動プロセスには API トークンが必要です。 プロジェクトに対する管理者または投稿者のアクセス権を持つ、クラウドインフラストラクチャアカウント上のAdobe Commerceからトークンを生成できます。

API トークンによる認証には、引き続き SSH 証明書の生成が必要です。 自動プロセスでは、SSH 証明書の生成も自動化する必要があります。

前提条件:

SSH と API トークン資格情報を使用して接続するには::

  1. API キー認証を使用して Cloud プロジェクトにログインします。

    code language-bash
    magento-cloud auth:api-token
    
  2. プロンプトで、有効な API トークンの値を入力します。

    code language-terminal
    Please enter an API token:
    >
    
    The API token is valid.
    You are logged in.
    

例:自動 SSH スクリプト

API トークンの保存には 2 つのオプションがあります。

NOTE
API トークンが格納されている場合、 magento-cloud CLI は自動的に認証を行うため、 magento-cloud login コマンド。

オプション 1:API トークンを格納する環境変数を作成します

bash_profile へのトークンの書き込み

echo "export MAGENTO_CLOUD_CLI_TOKEN=<your api token>" >> ~/.bash_profile

オプション 2:トークンをに追加します config.yaml ファイル

  1. ローカルワークステーションで、という名前のファイルを作成します。 config.yaml が含まれる .magento-cloud ホームディレクトリのフォルダー(存在しない場合)。

    code language-bash
    touch ~/.magento-cloud/config.yaml
    
  2. 次の設定をに追加します config.yaml ファイル。

    code language-yaml
    api:
       token: <your api token>
    

bash スクリプトのサンプル

#!/bin/bash
magento-cloud ssh-cert:load
ssh abcdef7uyxabce-master-7rqtabc--mymagento@ssh.us-3.magento.cloud "tail -n 10 ~/var/log/cloud.log"

トラブルシューティング

次の情報を使用して、次のような認証エラーが原因で発生した SSH 接続要求のエラーを解決します access requires MFA または permission denied.

要求は有効な証明書を提供していません

リクエストで有効な証明書が指定されない場合は、次のようなメッセージが表示されます。

to Hello user-test (UUID: abaacca12-5cd1-4b123-9096-411add578998), you successfully
authenticated, but could not connect to service abcdef7uyxabce-master-7rqtabc--mymagento@ssh.us-3.magento.cloud:>
(reason: access requires MFA)

接続の問題を解決するには、次のトラブルシューティング手順を試してください。

  • アカウント TFA 設定の検証
  • 再度認証し、証明書を再読み込みします

TFA の設定と認証を検証するには:

  1. へのログイン アカウント.

  2. 右上のアカウントメニューで、 My Profile.

  3. マイプロファイル ページで、 Security タブ。

    TFA が有効になっている場合は、TFA の設定を管理するためのオプションが [ セキュリティ ] セクションに表示されます。

  4. TFA が設定されていない場合は、 Set up application そして、指示に従って有効にします。 参照: TFA を有効にする.

  5. TFA が設定されている場合は、認証を再試行します。

SSH 証明書の認証と再読み込みを行うには:

  1. の使用 magento-cloud 再認証する CLI:

    code language-bash
    magento-cloud logout
    
    code language-bash
    magento-cloud login
    
  2. SSH 証明書を再読み込みします。

    code language-bash
    magento-cloud ssh-cert:load
    

権限が拒否されました

SSH キーがないか無効な場合、SSH 接続リクエストはを返します Permission denied (publickey) エラー。

Hello user-test (UUID: abaacca12-5cd1-4b123-9096-411add578998), you successfully authenticated, but could not connect to service oh2wi6klp5ytk-mc-35985-integration-nnulm4a--mymagento (reason: service doesn't exist or you do not have access to it)
oh2wi6klp5ytk-mc-35985-integration-nnulm4a--mymagento@ssh.eu-3.magento.cloud: Permission denied (publickey).

この問題を修正するには、現在のセッションに SSH キーを追加するか、SSH 設定ファイルを更新して SSH キーを自動的に読み込みます。 参照: SSH 公開鍵を追加.

MFA のないプロジェクトにアクセスできません

多要素認証(MFA)が有効になっているプロジェクトに対して認証を行う場合、MFA を必要としない他のプロジェクトに接続すると、次のエラーが発生することがあります。

ssh abcdef7uyxabce-master-7rqtabc--mymagento@ssh.us-3.magento.cloud

応答の例:

abcdef7uyxabce-master-7rqtabc--mymagento@ssh.us-3.magento.cloud: Permission denied (publickey).

SSH 証明書の生成中、 magento-cloud CLI は、追加の SSH キーをローカル環境に追加します。 ローカルの SSH 設定にプロジェクトアクセス用の SSH キーが含まれていない場合、このキーがデフォルトで使用されます。

SSH キーをローカル設定に追加するには、次の手順を実行します:

  1. を作成 config ファイル(存在しない場合)。

    code language-bash
    touch ~/.ssh/config
    
  2. を追加 IdentityFile 設定。

    code language-yaml
    Host *
      IdentityFile ~/.ssh/id_rsa
    
NOTE
複数の SSH キーを追加することで、複数の SSH キーを指定できます IdentityFile エントリを設定に追加します。
05f2f56e-ac5d-4931-8cdb-764e60e16f26