Google Distributed Cloud(GDC)エアギャップ アプライアンスは、鍵ベースの SSH 認証を使用して、仮想マシン(VM)インスタンスへの接続を確立します。デフォルトでは、オペレーティング システム(OS)を搭載した VM 上のローカル ユーザーにはパスワードは構成されていません。
始める前に
VM に接続する前に、次の前提条件を満たす必要があります。
- アクセス管理を有効にします。 ゲスト環境でアクセス管理が有効になっていない場合、続行できません 。デフォルトでは、新しい VM でアクセス管理が有効になっています。
- VM 外部アクセスを有効にします 伝送制御プロトコル(TCP)ポート 22 のピアに対して。
ProjectNetworkPolicy(PNP)
カスタム リソースを設定します。
- プロジェクトに PNP を設定すると、プロジェクトまたは組織の外部から VM にアクセスできます。
- PNP がないかどうかを診断するには、インフラストラクチャ オペレーター(IO)に問い合わせてください。
gdcloud コマンドライン インターフェース(CLI)コマンドを使用するには、gdcloud CLI をダウンロード、インストール、構成していることを確認してください。GDC エアギャップ アプライアンスのすべてのコマンドは
gdcloud または kubectl CLI を使用し、オペレーティング システム(OS)環境が必要です。
kubeconfig ファイルのパスを取得する
Management API サーバーに対してコマンドを実行するには、次のリソースが必要です。
Management API サーバー名を確認するか、プラットフォーム管理者(PA)にサーバー名を確認します。
パスを使用して、これらの手順の
MANAGEMENT_API_SERVER{"</var>"}}を置き換えます。
権限とアクセスをリクエストする
このページに記載されているタスクを行うには、プロジェクト VirtualMachine 管理者ロールが必要です。手順に沿って、VM が存在するプロジェクトの Namespace でプロジェクト VirtualMachine 管理者(project-vm-admin)ロールを
検証
するか、プロジェクト IAM 管理者に
割り当て
てもらいます。
GDC コンソールまたは gdcloud CLI を使用した VM オペレーションの場合は、プロジェクト IAM 管理者にプロジェクト VirtualMachine 管理者ロールとプロジェクト閲覧者(project-viewer)ロールの両方を割り当てるようリクエストしてください。
VM 接続を確立する
このセクションでは、特定のオペレーティング システム(OS)を搭載した VM への接続を確立する方法について説明します。
VM に接続する
特定の OS を搭載した VM への接続を確立するには、GDC コンソール、gdcloud CLI、または 仮想マシン マネージャー API を使用します。
コンソール
ナビゲーション メニューで、仮想マシン > インスタンス をクリックします。
VM のリストで、接続する実行中の VM の行を見つけます。[接続] 列で、[SSH] をクリックします。
SSH ブラウザ ターミナルが開きます。シェルにコマンドを入力するか、[FTP] をクリックしてファイル構造に移動し、ファイルをアップロードします。
gdcloud
gdcloud compute ssh コマンドを実行して、SSH を使用して VM に接続します
gdcloud compute ssh VM_NAME --project=PROJECT_ID
次の変数を置き換えます。
- VM_NAME: VM の名前。
- PROJECT_ID: VM を含むプロジェクトの ID。
CLI のデフォルト プロパティを設定している場合は、このコマンドから --project フラグを省略できます。次に例を示します。
gdcloud compute ssh VM_NAME
API
VM に接続します。
- ターミナルを開きます。
- SSH 認証鍵ペアを作成します。
- 有効期間(TTL)値を使用して、公開鍵とユーザー名をアップロードします。
GDC は SSH 認証鍵とユーザー名を取得し、ユーザー名を使用してユーザー アカウントを作成します。VM では、GDC は VM 上のユーザーの ~/.ssh/authorized_keys ファイルに公開鍵を保存します。
コマンドラインから VM に接続する手順は次のとおりです。
SSH 認証鍵ペアとユーザー名を作成します。
OS ワークステーションで、
ssh-keygenユーティリティを使用して新しい SSH 認証鍵ペアを作成します。次のコードサンプルでは、RSA(Rivest-Shamir-Adleman)鍵ペアを作成します。ssh-keygen -t rsa -f ~/.ssh/KEY_FILENAME -C USERNAME -b 2048次の定義を使用して変数を置き換えます。
変数 定義 KEY_FILENAMESSH 認証鍵ファイルの名前。たとえば、 my-ssh-keyというファイル名を指定した場合、my-ssh-keyという名前の秘密鍵ファイルとmy-ssh-key.pubという名前の公開鍵ファイルが生成されます。USERNAMEVM 上のユーザー名( testuser、testuser_gmail_comなど)。ssh-keygenユーティリティは、秘密鍵ファイルを~/.ssh/KEY_FILENAMEパスに、公開鍵ファイルを~/.ssh/KEY_FILENAME.pubパスに保存します。ユーザー
testuserの公開鍵は、次の例のようになります。ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... testuser鍵を VM にアップロードし、鍵の公開鍵、ユーザー名、有効期間(TTL)値を使用して Kubernetes リソースを作成します。
次の例では、
access_request.yamlファイルを使用して、KEY_FILENAME秘密鍵と 10 分の TTL 値を持つ VM インスタンスへのアクセスを許可します。apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineAccessRequest metadata: namespace: VM_NAMESPACE name: AR_NAME spec: ssh: key: | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco ttl: 10m user: USERNAME vm: VM_NAME次の定義を使用して変数を置き換えます。
変数 定義 VM_NAMESPACEVM の Namespace。 AR_NAMEアクセス リクエスト名。 USERNAMEVM 上のユーザー名( testuser、testuser_gmail_comなど)。VM_NAMEVM インスタンスの名前。 鍵を作成します。
kubectl create -f access_request.yaml --kubeconfig MANAGEMENT_API_SERVERアクセス リクエストのステータスを確認します。
kubectl get virtualmachineaccessrequests.virtualmachine.gdc.goog -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVERVM_NAMESPACEは VM の Namespace に置き換えます。configuredステータスは、VM に接続できることを示します。VM に接続します。
ssh -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP次の値を置き換えます。
PATH_TO_PRIVATE_KEYは、VM に追加した公開鍵に対応する秘密 SSH 認証鍵ファイルへのパスに置き換えます。USERNAMEは、SSH 認証鍵の作成時に指定したユーザー名に置き換えます。たとえば、cloudysanfrancisco_example_comやcloudysanfranciscoです。EXTERNAL_IPは、VM の外部 上り(内向き)IP アドレス に置き換えます。
トラブルシューティング
このセクションでは、アクセス リクエストの作成後に VM インスタンスへの接続時に発生する可能性のある問題のトラブルシューティング方法について説明します。
考えられる問題を特定するには、次の手順を行います。
VM が実行されていることを確認します。次のコマンドで、編集可能な変数を自分の値に置き換えます。
kubectl get virtualmachines.virtualmachine.gdc.goog VM_NAME -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVERVM が実行されていない場合、接続することも、新しいリクエストを構成することもできません。
VM が数分間実行されていることを確認します。VM を起動したばかりの場合、SSH アクセスに必要なサービスがまだ実行されていない可能性があります。 通常、起動後 5 分以内に実行されます。
アクセス リクエストの TTL 値を超えていないことを確認します。時間が TTL 値に達すると、鍵は削除されます。
VirtualMachineAccessRequestにconfiguredステータスが表示されている場合は、次の要件を確認します。- ポート 22 で VM へのデータ転送を有効にしました。
- マシンが VM にルーティングされます。たとえば、
curl -vso /dev/null --connect-timeout 5 EXTERNAL_IP:22コマンドを使用して ルーティングを確認できます。
VirtualMachineAccessRequestにfailedステータスが表示されている場合は、完全なステータスを表示し、リクエストが失敗した原因を示すエラー メッセージを確認します。kubectl describe virtualmachineaccessrequest.virtualmachine.gdc.goog AR_NAME -n VM_NAMESPACE --kubeconfig MANAGEMENT_API_SERVER上記のコマンドで、編集可能な変数を自分の値に置き換えます。
VirtualMachineAccessRequestのステータスが空白の場合、ゲスト環境が実行されていない可能性があります。