SSH アクセスの多要素認証を有効にする
セキュリティを強化するために、Adobe Commerce on Cloud Infrastructure では、クラウド環境への SSH アクセスの認証要件を管理するための多要素認証(MFA)の適用を提供しています。
プロジェクトで MFA が有効な場合、SSH アクセスを持つすべてのユーザーアカウントは、環境にアクセスするために、二要素認証(TFA)コードまたは API トークンと SSH 証明書のいずれかを必要とします。
SSH アクセス用の証明書
MFA を使用すると、Adobe Cloud Certifier API で生成された短期間有効な SSH 証明書と OAUTH アクセストークンを交換できます。 ユーザーが管理者または投稿者のロール、有効な SSH キー、有効な TFA コードまたは API トークンを持っている場合、クラウドインフラストラクチャー上のAdobe Commerceはこれらの資格情報を使用して一時的な SSH 証明書を生成します。 証明書の有効期限は 1 時間に設定されていますが、現在のセッション中に自動更新されます。
MFA を使用してプロジェクトにログインした後、ユーザーは magento-cloud
CLI を使用して SSH 証明書を生成する必要があります。
magento-cloud ssh-cert:load
ssh-cert:load
コマンドは、SSH 証明書を生成して、ローカル ユーザーの SSH エージェントにインストールします。
ログイン時に証明書を自動生成
magento-cloud
CLI への認証時に SSH 証明書を自動的に生成するように、ローカル環境を設定することができます。
SSH 証明書の自動生成を magento-cloud
CLI 設定に追加するには:
-
ローカルワークステーションで、
config.yaml
という名前のファイルをホームディレクトリの.magento-cloud
フォルダー(存在しない場合)に作成します。code language-bash touch ~/.magento-cloud/config.yaml
-
次の設定を
config.yaml
ファイルに追加します。code language-yaml api: auto_load_ssh_cert: true
-
magento-cloud
CLI を使用して再度認証します。ログアウト:
code language-bash magento-cloud logout
ログイン:
code language-bash magento-cloud login
次の応答に従います。
code language-none 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 を有効にするを参照してください。
前提条件:
MFA 適用が有効なプロジェクトの場合、SSH アクセスには次の権限とアカウント設定が必要です。
TFA ユーザーアカウント資格情報を使用して SSH を使用して接続するには:
-
アカウントにログインします。
-
ローカル・ワークステーションで、
magento-cloud
CLI を使用して SSH 証明書を生成します。code language-bash magento-cloud ssh-cert:load
応答の例:
code language-none 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
-
SSH を使用してリモート環境に接続します。
code language-bash ssh abcdef7uyxabce-master-7rqtwti--mymagento@ssh.us-5.magento.cloud
code language-none __ __ _ ___ _ _ | \/ |__ _ __ _ ___ _ _| |_ ___ / __| |___ _ _ __| | | |\/| / _` / _` / -_) ' \ _/ _ \ | (__| / _ \ || / _` | |_| |_\__,_\__, \___|_||_\__\___/ \___|_\___/\_,_\__,_| |___/ Welcome to Magento Cloud. This is environment master-7rqtwti of project abcdef7uyxabce. web@mymagento.0:~$
SSH と TFA を使用したソースコードの管理
クラウドインフラストラクチャプロジェクト上のAdobe Commerceのソースコードを管理する場合は、SSH を使用してプロジェクトの Git リポジトリに対する認証を行います。 プロジェクトで MFA 適用が有効になっている場合は、Git リポジトリを使用してコマンドライン操作を実行する前に、SSH 証明書を生成する必要があります。
TFA ユーザーアカウント資格情報を使用して SSH を使用して接続するには:
-
アカウントにログインし、TFA を使用して認証します。
note note NOTE アカウントで TFA が有効になっていない場合は、有効にする必要があります。 クラウドアカウントで TFA を有効にするを参照してください。 -
ローカル・ワークステーションで、
magento-cloud
CLI を使用して SSH 証明書を生成します。code language-bash magento-cloud ssh-cert:load
応答の例:
code language-none 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
-
プロジェクト環境の Git リポジトリのクローンを作成します。
code language-bash git clone --branch integration abcdef7uyxabce@git.us-3.magento.cloud:abcdef7uyxabce.git myproject
応答の例:
code language-none 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 トークン資格情報で接続するには:
-
API キー認証を使用して Cloud プロジェクトにログインします。
code language-bash magento-cloud auth:api-token
-
プロンプトで、有効な API トークンの値を入力します。
code language-none Please enter an API token: > The API token is valid. You are logged in.
例:自動 SSH スクリプト
API トークンの保存には 2 つのオプションがあります。
magento-cloud
CLI が自動的に認証され、magento-cloud login
コマンドを実行する必要はありません。オプション 1:API トークンを格納する環境変数を作成する
bash_profile へのトークンの書き込み
echo "export MAGENTO_CLOUD_CLI_TOKEN=<your api token>" >> ~/.bash_profile
オプション 2:config.yaml
ファイルへのトークンの追加
-
ローカルワークステーションで、
config.yaml
という名前のファイルをホームディレクトリの.magento-cloud
フォルダー(存在しない場合)に作成します。code language-bash touch ~/.magento-cloud/config.yaml
-
次の設定を
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"
トラブルシューティング
次の情報を使用して、access requires MFA
や permission denied
などの認証エラーが原因で発生した SSH 接続要求エラーを解決します。
要求は有効な証明書を提供していません
リクエストで有効な証明書が指定されない場合は、次のようなメッセージが表示されます。
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 設定と認証を確認するには:
-
アカウントにログインします。
-
右上のアカウントメニューで、「My Profile」をクリックします。
-
マイプロファイル ページで、「Security」タブをクリックします。
TFA が有効になっている場合は、TFA の設定を管理するためのオプションが [ セキュリティ ] セクションに表示されます。
-
TFA が設定されていない場合は、Set up application をクリックし、指示に従って有効にします。 TFA を有効にするを参照してください。
-
TFA が設定されている場合は、認証を再試行します。
SSH 証明書を認証して再読み込みするには:
-
magento-cloud
CLI を使用して再度認証します。code language-bash magento-cloud logout
code language-bash magento-cloud login
-
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 キーをローカル設定に追加するには:
-
config
ファイルが存在しない場合は作成します。code language-bash touch ~/.ssh/config
-
IdentityFile
設定を追加します。code language-yaml Host * IdentityFile ~/.ssh/id_rsa
IdentityFile
エントリを追加することで、複数の SSH キーを指定できます。