ブラウザから SSH を使用すると、Google Cloud Platform Console 内から SSH を使用して Compute Engine 仮想マシン(VM)インスタンスに接続できます。この機能を使用するために、ウェブブラウザの拡張機能や追加のソフトウェアをインストールする必要はありません。ブラウザからの SSH は、インスタンスに接続する他の方法の代わりとなります。
Linux VM インスタンスへの接続
Compute Engine は、ブラウザから Linux インスタンスに接続するたびに SSH 認証鍵を管理し、必要に応じて SSH 認証鍵ペアを作成して適用します。ブラウザからの接続に使用される SSH 鍵を管理することはできません。代わりに、ブラウザからの接続に対するユーザーのアクセスは、Cloud Identity and Access Management 役割で制御します。プロジェクトのメンバーと IAM 役割は、Google Cloud Platform Console の [IAM] ページで表示できます。
ブラウザを使用して接続するには、Compute インスタンス管理者であるプロジェクト メンバーである必要があります。インスタンスをサービス アカウントとして実行するには、サービス アカウント ユーザーである必要もあります。ブラウザを使用して接続するためのアクセス権がない場合は、プロジェクト オーナーに自分をプロジェクトに追加してアクセス権を付与するよう依頼してください。
アクセスが許可されたら、GCP Console のウェブブラウザから Linux インスタンスに直接接続します。
- GCP Console の [VM インスタンス] ページに移動します。
-
仮想マシン インスタンスのリストで、接続するインスタンスの行の [SSH] をクリックします。
また、インスタンスへの SSH 接続は、その名前をクリックし、インスタンスの詳細ページから [SSH] をクリックして開くこともできます。
これで、ターミナルを使用して Linux インスタンスでコマンドを実行できます。終了したら、exit
コマンドを使用してインスタンスから切断します。
サポートされる環境
ブラウザからの SSH では、以下をサポートしています。
- ウェブブラウザ。 Google Chrome、Firefox、Microsoft Edge の最新版、Microsoft Internet Explorer 11 以上、Safari 8 以上。プライベート ブラウズモードの Safari はサポートされていません。
- 仮想マシンの構成。 Google Cloud Platform(GCP)でネイティブに使用できるすべての Linux VM イメージ。
既知の問題
起動レイテンシ。 ブラウザからの SSH の使用時における現在の接続時間は、5~30 秒です。ゲスト環境の現在のバージョンは、より速い接続に対応しています。
新しい VM インスタンスがすぐに利用できない。 新しいインスタンスでは、起動して SSH 接続が確立するまでに一定の時間を要します。新しいインスタンスに接続できない場合は、数分後に再試行してください。
断続的な切断。 現時点では、接続の存続時間に関する特定の SLA は提供されていません。ターミナル ウィンドウを長期間開いたままにする場合は、tmux や screen などのターミナル マルチプレクサを使用してください。
外部 IP アドレスのないインスタンスに接続する。 Compute Engine インスタンスに内部 IP アドレスしかない場合は、以下のいずれかの方法で接続します。
Cloud Identity-Aware Proxy TCP 転送が構成されているブラウザから SSH で接続する。外部 IP を持たないインスタンスで、Cloud IAP 経由の TCP トンネリングが許可されている場合は、ブラウザから SSH でインスタンスに接続できます。
踏み台インスタンスのブラウザから SSH で接続する。このオプションを使用するには、ターゲットと踏み台インスタンスの両方が同じ VPC ネットワーク上に存在するか、接続する VPC ネットワークに存在する必要があります。
踏み台インスタンスのブラウザから SSH で接続するには、次の手順を行います。
- ブラウザから SSH を使用し、外部 IP アドレスを持つ踏み台インスタンスに接続します。これにより、一時的な SSH 認証鍵ペアが生成され、踏み台インスタンスのプロジェクトまたはインスタンス メタデータに公開鍵がアップロードされます。
踏み台インスタンスから、内部 IP アドレスのみを持つターゲット インスタンスに接続します。踏み台インスタンスからターゲット インスタンスに接続するには、以下のコマンドを実行します。
ssh -A [INTERNAL_IP]
[
INTERNAL_IP
] は、ターゲット インスタンスの内部 IP アドレスです。最初の手順で生成された一時鍵を使用するには、踏み台インスタンスに接続してから 2 分以内にこのコマンドを実行する必要があります。
Ctrl+W
キーでウィンドウが閉じる。Ctrl+W
、Ctrl+F4
、Ctrl+Tab
、その他のブラウザのキーボード ショートカットとして機能するキーの組み合わせは、SSH クライアントからターゲット システムに渡されません。これらのショートカットまたはその他のショートカットを送信するには、ウィンドウの右上にあるキーボード アイコンをクリックします。Google Chrome ブラウザを使用する場合は、「SSH for Google Cloud Platform」拡張機能をインストールできます。この拡張機能によって、Ctrl+W
などのブラウザで一般に予約されているキーボード ショートカットに直接アクセスできるようになり、ブラウザからの SSH と Cloud Shell のコンソール エクスペリエンスが向上します。大きなファイルの場合、ファイル転送が遅くなることがあります。大きなファイルを転送する場合は、
gcloud compute scp
の使用をおすすめします。
「Unable to connect on port 22」エラー メッセージへの対処
このエラーは、以下の条件で表示されることがあります。
インスタンスが起動中で、sshd がまだ実行されていない。 インスタンスの起動が完了したことを確認してから、再試行してください。
インスタンスで sshd が実行されていない。デフォルトでは、
sshd
は標準の Compute Engine イメージから作成されたインスタンス上で実行されます。sshd
を手動で無効にした場合、またはこのサービスを実行しないカスタム イメージを構成した場合、ブラウザからの SSH は機能しません。sshd が接続先以外のポートでリスニングしている。デフォルトでは、ブラウザからの SSH は、ポート 22 上のインスタンスに接続します。カスタムポートで
sshd
を実行している場合、SSH ボタンのプルダウン リストから [ブラウザ ウィンドウでカスタムポートを開く] 項目を選択すると、そのポートに接続できます。ポート上の SSH アクセスを許可するファイアウォール ルールがない。 ポート 22 上の SSH アクセスは、すべての Compute Engine インスタンスでデフォルトで有効になっています。アクセスを無効にしている場合、ブラウザからの SSH は機能しません。22 以外のポートで
sshd
を実行している場合、カスタム ファイアウォール ルールを使用して、そのポートへのアクセスを有効にする必要があります。SSH アクセスを許可するファイアウォール ルールが有効になっているが、GCP Console サービスからの接続を許可するように構成されていない。ブラウザベースの SSH セッションの送信元 IP アドレスは、GCP Console によって動的に割り当てられ、セッションごとに異なることがあります。この機能を動作させるには、任意の IP アドレスからの接続、または公開 SPF レコードを使用して取得できる Google の IP アドレス範囲からの接続を許可する必要があります。
インスタンスがシャットダウンされている。 インスタンスが起動して実行されていることを確認します。正常でないインスタンスのトラブルシューティングを行う方法については、Compute Engine を使用する場合の一般的なヒントをご覧ください。
「Could not connect, retrying...」エラーへの対処
インスタンスのブートディスクの空き容量が不足している。 接続が確立されると、ゲスト環境により、現在のセッションに使用されている公開 SSH 認証鍵で
~/.ssh/authorized_keys
ファイルが更新されます。ディスクの空き容量が不足していると、更新に失敗します。ディスク容量の問題を特定するには、インスタンスのシリアル コンソールの出力でディスク不足エラーを探します。ディスク容量の問題を解決する方法としては、次のようなものがあります。- インスタンスのブート永続ディスクをサイズ変更して、そのサイズを増やします。インスタンスで使用されるオペレーティング システム イメージで自動サイズ変更がサポートされている場合、インスタンスの再起動後にオペレーティング システムが新しいサイズに合わせてルート パーティションのサイズを自動的に変更するので、これが最も簡単なオプションとなります。
- どのファイルがディスク容量を消費しているかわかっている場合は、不要なファイルを削除し、インスタンスを起動するための容量を確保する起動スクリプトを作成します。スクリプトが実行されてファイルが消去されるように、インスタンスを再起動します。正しいコマンドを使用して正しいファイルを削除するように注意してください。インスタンスが起動し、SSH 経由でインスタンスに接続できるようになった後、ファイルが削除され続けないように、
startup-script
メタデータ アイテムの設定を元に戻します。 - インスタンスのディスクにアクセスする方法については、Compute Engine を使用する場合の一般的なヒントをご覧ください。
$HOME
、$HOME/.ssh
、$HOME/.ssh/authorized_keys
の権限または所有権が間違っている。 ゲスト環境では、接続ユーザーの$HOME/.ssh/authorized_keys
ファイルに公開 SSH 認証鍵を保存できる必要があります。$HOME
ディレクトリには、Unix 権限の0755
または0700
を設定します。$HOME/.ssh
ディレクトリには Unix 権限の0700
を設定します。authorized_keys
ファイルには、Unix 権限の0600
を設定します。$HOME
ディレクトリ、$HOME/.ssh
ディレクトリ、authorized_keys
ファイルの所有者が接続ユーザーと同じであることを確認してください。ユーザー名を変更して別のユーザーとして接続を試み、接続できないユーザーの権限問題を修復します。
コピーと貼り付け
ブラウザとプラットフォームでサポートされているキーボード ショートカットを使用してテキストのコピーと貼り付けを行うことができます(Windows および Linux では Ctrl+C
/ Ctrl+V
、macOS では Cmd+C
/ Cmd+V
、Chrome OS では Ctrl+Shift+V
)。一般に、これらのコマンドはほとんどの構成で機能しますが、構成によって結果が異なる場合があります。
ファイルを転送する
ブラウザ ウィンドウから SSH を使用してインスタンスへの SSH 接続を確立できる場合は、その接続を使用してファイルをインスタンスに転送できます。
詳しくは、ブラウザの SSH を使用したファイルの転送をご覧ください。
スクロール
マウスホイールやトラックパッドを使用して、ターミナルをスクロールできます。また、Windows と Linux では Ctrl+Shift+PageUp
/ Ctrl+Shift+PageDn
キーボード ショートカットで、macOS では Fn+Shift+Up
/ Fn+Shift+Down
でターミナルをスクロールできます。
ログイン ユーザー名
デフォルトのユーザー名
デフォルトでは、SSH セッションのユーザー名は、アカウントにログインしているメールアドレスから、ドメイン情報を省略して、生成されます。たとえば、メールアドレスが user@gmail.com
の場合、対応するユーザー名は user
になります。
OS ログインを有効にした場合のデフォルトのユーザー名
OS ログインが有効になっていて、G Suite 管理者がユーザー名を設定していない場合は、デフォルトで長いバージョンのユーザー名が設定されます。このユーザー名にはドメイン情報が含まれています。たとえば、メールアドレスが user@gmail.com
の場合、対応するユーザー名は user_gmail_com
になります。OS ログイン動作の詳細については、予想されるログイン動作をご覧ください。
デフォルトのユーザー名の変更
ユーザー名は、次の手順で SSH ウィンドウ内から変更できます。
- VM インスタンスに接続します。
- SSH ウィンドウの右上隅にある設定アイコン
をクリックします。
- [Linux ユーザー名を変更] を選択します。Linux システムではログイン名の最大長が 32 文字に制限されているため、デフォルトのユーザー名と構成済みユーザー名はその制限を超えないように切り捨てられます。
(省略可)データを新しいホーム ディレクトリにコピーします。新しいユーザー名はそれぞれ異なる Unix ユーザーなので、ホーム ディレクトリにデータを保存している場合は、
cp
コマンドを使用してデータを新しいディレクトリにコピーできます。たとえば、ユーザー名をuser_gmail_com
からuser
に変更した場合は、次のコマンドを実行します。# This will overwrite files in the target directory, so be careful. $ sudo cp -r /home/user_gmail_com/. /home/user
$ sudo chown -R user:user /home/user