インタラクティブ シリアル コンソールを構成する
Bare Metal Solution は、Bare Metal Solution サーバーにアクセスするためのインタラクティブ シリアル コンソールを提供します。シリアル コンソールでは、直接コマンドを実行し、プロンプトに応答できます。シリアル コンソールを使用して、構成とトラブルシューティングを行うことができます。Bare Metal Solution サーバーは、最初のシリアルポート(ポート 1)をシリアル コンソールとして使用します。
インタラクティブ シリアル コンソールは、次のサーバーでのみサポートされます。
TS54(43.45.00.002)以降のファームウェア バージョンを搭載した汎用サーバー。3.50.58以降のファームウェア バージョンを搭載したメモリ最適化サーバー。
開始する前に、サーバーのファームウェアを最新バージョンにアップグレードしてください。始める前にをご覧ください。
インタラクティブ シリアル コンソール接続が 30 日以上経過している場合、この接続は強制的に切断される可能性があります。
このドキュメントでは、サーバーでインタラクティブ シリアル コンソール アクセスを有効または無効にする方法について説明します。
始める前に
Bare Metal Solution API を有効にします。Bare Metal Solution API を使用するように Google Cloud プロジェクトを設定するをご覧ください。
適切な Identity and Access Management(IAM)ロールをユーザーに付与します。このドキュメントのすべてのタスクを実行するには、次のいずれかのロールが必要です。
roles/baremetalsolution.adminroles/baremetalsolution.editor
必要なファームウェア バージョンがあることを確認します。
- 汎用サーバーの場合、
TS54(43.45.00.002)以降。 - メモリ最適化サーバーの場合、
3.50.58以降。
以下の手順に沿って登録してください。
Bare Metal Solution サーバーで、次のコマンドを実行します。
sudo dmidecode -s bios-version
成功すると、必要な BIOS のバージョン以降が出力に表示されます。たとえば、汎用サーバーの場合、出力には
43.45.00.002以降の BIOS バージョンが表示されます。Version: BIOS_PUR043.45.00.002
BIOS のバージョンが必要なファームウェアより古い場合は、サーバーのファームウェアをアップグレードします。アップグレードについてサポートが必要な場合は、カスタマーケアにお問い合わせください。
- 汎用サーバーの場合、
Bare Metal Solution サーバーが 2022 年 6 月より前にプロビジョニングされた場合、カーネル ブート パラメータにインタラクティブ シリアル コンソールに必要な構成がない可能性があります。逆に、2022 年 6 月以降にプロビジョニングされた場合は、必要な構成が OS イメージにすでに統合されている可能性があります。ただし、OS のパッチ適用や企業固有のポリシーの適用によって、デフォルトのカーネル ブート パラメータが変更されている可能性があります。いずれにしても、インタラクティブ シリアル コンソールに必要な OS 構成の可用性を確認することをおすすめします。
インタラクティブ シリアル コンソールに必要な構成が OS に設定されていることを確認する手順は次のとおりです。
/etc/defaultディレクトリで GRand Unified Bootloader(GRUB)構成ファイルを見つけます。GRUB 構成ファイルに次の設定が含まれていることを確認します。
GRUB_CMDLINE_LINUX="(append to the existing value) console=tty0 console=ttyS0,115200" GRUB_TERMINAL_OUTPUT="console serial" GRUB_TERMINAL="console serial" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
これらの設定がファイルに含まれている場合は、残りの手順をスキップしてください。GRUB 構成ファイルを使用してシリアル コンソールにアクセスできます。
GRUB 構成ファイルにこれらの設定がない場合は、手動で追加してください。
grub-mkconfigコマンドを実行して変更を処理します。詳細については、GRUB ドキュメントをご覧ください。サーバーを再起動します。
インタラクティブ シリアル コンソール アクセスを有効にする
インタラクティブ シリアル コンソールを有効にしてアクセスする手順は次のとおりです。
インタラクティブ シリアル コンソールへのアクセスを有効にする
インタラクティブ シリアル コンソールを使用する前に、サーバー上でインタラクティブ アクセスを有効にする必要があります。
gcloud
インタラクティブ シリアル コンソールへのアクセスを有効にするには、gcloud bms instances enable-serial-console コマンドを実行します。
gcloud bms instances enable-serial-console SERVER_NAME --project=PROJECT_ID --region=REGION
次のように置き換えます。
- SERVER_NAME: サーバーの名前。
- PROJECT_ID: プロジェクト ID。
- REGION: サーバーのリージョン。
API
インタラクティブ シリアル コンソールへのアクセスを有効にするには、プロジェクト ID、リージョン、サーバー名を入力して、次の curl コマンドを実行します。
curl -v \ -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json" \ "https://baremetalsolution.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/SERVER_NAME:enableInteractiveSerialConsole"
次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- REGION: サーバーのリージョン。
- SERVER_NAME: サーバーの名前。
SSH 認証鍵ペアを生成する
シリアル コンソールへのアクセスを認証するための SSH 認証鍵ペアを生成します。この操作は、プロジェクトごとに 1 回行う必要があります。
ジャンプホストの VM インスタンスまたはインターネットに接続している他のターミナルから ssh-keygen コマンドを実行して、新しい SSH 認証鍵ペアを作成します。
ssh-keygen -b 4096 -f SSH_KEY_ID -N 'PASSPHRASE' -t rsa
次のように置き換えます。
- SSH_KEY_ID: 公開鍵と秘密鍵の生成に使用される SSH 認証鍵ファイルのルート名。
- PASSPHRASE: シリアル コンソールからサーバーにアクセスする際に使用するパスフレーズ。
ssh-keygen コマンドは、秘密鍵を SSH_KEY_ID というファイルに保存し、公開鍵をホーム ディレクトリの SSH_KEY_ID.pub というファイルに保存します。
SSH 認証鍵を登録する
シリアル コンソールへのアクセスを認証するには、プロジェクトに SSH 認証鍵を登録します。この操作は、鍵ペアごとに 1 回だけ行う必要があります。
gcloud
SSH 認証鍵を登録するには、gcloud bms ssh-keys add コマンドを実行します。
gcloud bms ssh-keys add SSH_KEY_ID --project=PROJECT_ID --key-file=SSH_KEY_ID.pub
次のように置き換えます。
- SSH_KEY_ID: 公開鍵と秘密鍵の生成に使用される SSH 認証鍵ファイルのルート名。
- PROJECT_ID: プロジェクト ID。
- REGION: サーバーのリージョン。
- SERVER_NAME: サーバーの名前。
API
SSH 認証鍵を登録するには、プロジェクト ID、SSH 認証鍵 ID、公開鍵ファイル名を入力し、次の curl コマンドを実行します。
curl -v \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
-H "Content-Type: application/json" \
"https://baremetalsolution.googleapis.com/v2/projects/PROJECT_ID/locations/global/sshKeys?ssh_key_id=SSH_KEY_ID" \
--data "{\"public_key\": \"$(cat SSH_KEY_ID.pub)\"}"
次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- SSH_KEY_ID: 公開鍵と秘密鍵の生成に使用される SSH 認証鍵ファイルのルート名。
プロジェクトの SSH 認証鍵を管理するには、SSH 認証鍵を管理するをご覧ください。
サーバーに接続する
インタラクティブ シリアル コンソールに接続する前に、必要に応じてシリアル コンソールのホスト鍵を使用して接続を検証し、なりすまし攻撃や中間者攻撃を防ぐことができます。
SSH を使用してインタラクティブ シリアル コンソールにアクセスします。次のコマンドを実行します。
ssh -i SSH_KEY_ID -p 9600 PROJECT_ID.REGION.SERVER_NAME.USERNAME.bms=true@\REGION\-ssh-serialport.googleapis.com
次のように置き換えます。
- SSH_KEY_ID: 公開鍵と秘密鍵の生成に使用される SSH 認証鍵ファイルのルート名。
- PROJECT_ID: プロジェクト ID。
- REGION: サーバーのリージョン。
- SERVER_NAME: サーバーの名前。
- USERNAME: シリアル コンソールから Bare Metal Solution サーバーへのアクセスに使用するユーザー名。
プロンプトが表示されたら、前の手順で構成した SSH 認証鍵のパスフレーズを入力します。必要に応じて、Enter または Return キーを押して、インタラクティブ シリアル コンソールへのアクセス権を取得します。
インタラクティブ シリアル コンソールとの接続を解除する
シリアル コンソールとの接続を解除する手順は次のとおりです。
ENTERまたはRETURNキーを押します。- 「
~.」(チルダとピリオド)を入力します。
SSH 認証鍵を管理する
SSH 認証鍵はプロジェクトごとに保存されます。SSH 認証鍵は次の方法で管理できます。
SSH 認証鍵を一覧表示する
プロジェクトに登録されている公開 SSH 認証鍵を一覧表示できます。
gcloud
公開 SSH 認証鍵を一覧表示するには、gcloud bms ssh-keys list コマンドを実行します。
gcloud bms ssh-keys list --project=PROJECT_ID
次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
API
公開 SSH 認証鍵を一覧表示するには、プロジェクト ID を入力し、次の curl コマンドを実行します。
curl -v \ -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json" \ "https://baremetalsolution.googleapis.com/v2/projects/PROJECT_ID/locations/global/sshKeys"
次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
SSH 認証鍵を削除する
プロジェクトで承認された鍵のリストから SSH 認証鍵を削除できます。
gcloud
公開 SSH 認証鍵を削除するには、gcloud bms ssh-keys remove コマンドを実行します。
gcloud bms ssh-keys remove SSH_KEY_ID --project=PROJECT_ID
次のように置き換えます。
- SSH_KEY_ID: 公開鍵と秘密鍵の生成に使用される SSH 認証鍵ファイルのルート名。
- PROJECT_ID: プロジェクト ID。
API
公開 SSH 認証鍵を削除するには、プロジェクト ID と SSH 認証鍵 ID を入力し、次の curl コマンドを実行します。
curl -v \ -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json" \ "https://baremetalsolution.googleapis.com/v2/projects/PROJECT_ID/locations/global/sshKeys/SSH_KEY_ID"
次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- SSH_KEY_ID: 公開鍵と秘密鍵の生成に使用される SSH 認証鍵ファイルのルート名。
インタラクティブ シリアル コンソール アクセスを無効にする
サーバーでインタラクティブ シリアル コンソール アクセスを無効にするには、以下の操作を行います。
gcloud
インタラクティブ シリアル コンソールを無効にするには、gcloud bms instances disable-serial-console コマンドを実行します。
gcloud bms instances disable-serial-console SERVER_NAME --project=PROJECT_ID --region=REGION
次のように置き換えます。
- SERVER_NAME: サーバーの名前。
- PROJECT_ID: プロジェクト ID。
- REGION: サーバーのリージョン。
API
インタラクティブ シリアル コンソールを無効にするには、プロジェクト ID、リージョン、サーバー名を入力して、次の curl コマンドを実行します。
curl -v \ -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "Content-Type: application/json" \ "https://baremetalsolution.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/instances/SERVER_NAME:disableInteractiveSerialConsole"
次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- REGION: サーバーのリージョン。
- SERVER_NAME: サーバーの名前。