0.概要

本ページでは、Google Cloud Platform(GCP)上のVirtural Machine(VM)であるConpute Engine上に、OSとしてUbuntu 24.04 LTSを立上げ、Windows PCからSSHでアクセスできるまでを紹介します。ユーザーガイドの「14.クラウド(GCP)との接続」では、R-MSMを使ったNode-REDシステムをいかに簡単に立ち上げるかという観点でDockerというパッケージを使ってNode-REDを立ち上げています。そのため、Node-REDが走っているOSは、Google の Container-Optimized OSです。しかし、R-MSMを使ったIoTに慣れてくると、Node-REDと他の言語プログラムとの連携などがやりたくなってくると思います。そうなると、使い慣れているOSを使用したくなります。GCPには、無償のOSがいくつか準備されています。ここでは、Ubuntu 24.04 LTSを立ち上げてみます。無償の範囲内でのリソースを使って立ち上げます。

つぎに、本ページの全体の流れを示します。

「1.新規プロジェクトの作成」ならびに「2.VMインスタンスの作成」は、2024年8月19日に更新しています。それ以外は、2022年に執筆した時点の情報です。

1. 新規プロジェクトの作成

Google Cloudへのアカウントを持っていて、Google Cloud Platformのコンソールに接続できることを前提としています。

お持ちでない方は、こちら(GCPのアカウント作成)を参考にアカウントを取得してください。

1) 新規プロジェクトを作成するために、Google Cloud Platformのコンソール画面にアクセスします。画面の上部にあるプロジェクトの選択肢「My First Project」をクリックします。

2)プロジェクトの選択画面がポップアップしてきますので、右上の[新規プロジェクト]をクリックします。

3) 新しいプロジェクトの作成画面に変わりますので、新しいプロジェクトの名前を入力したのち、[作成]ボタンをクリックします。

4) Google Cloud Platformのホームに戻ります。プロジェクトが出来たかを確認するために、再度、プロジェクトの選択肢「My First Project」をクリックします。

5)プロジェクトの選択画面がポップアップします。先ほど作成したプロジェクトがリストに上がっています。新しいプロジェクトに移動するために、新しいプロジェクト名をクリックします。

6) 新しいプロジェクトのダッシュボード画面に移動できました。

2. VMインスタンスの作成

2.1. VMインスタンスの仕様

新規プロジェクトの作成が完了しましたので、次に、その中にVMインスタンスを新たに作成します。

VMインスタンスを作成するにあたり、いくつかの仕様を決める必要があります。ここでは、無料の範囲のなかで最大の仕様ということをメインに決めました。次の表にこれから設定するVMインスタンスの仕様を示します。

項目 仕様 備考
名前 vmce01
リージョン us-west1 無料枠内で日本に近い西海岸
ゾーン us-west1-b 使用可能なリージョンとゾーン
マシンタイプ e2-micro GCPの無料枠
ブートディスク 標準永続ディスク : 10GB 無料枠内最大値
OSイメージ Ubuntu 24.04 LTS C++をコンパイルしたい

参考にしたGCPの無料枠のCompute Engineに関する部分の抜粋を以下に示します(2024年8月19日現在)。

 

2.2. VMインスタンスの新規作成

1) Google Cloud Platformのコンソール画面に戻り、左側のメニューから[Compute Engine]→[VMインスタンス]を選択します。左側にメニューが無い場合には、左上の三本線(カーソルを持って行くと[ナビゲーションメニュー]と表示されます)をクリックして下さい。メニューがポップアップしてきますので、その中から、[Compute Engine]→[VMインスタンス]を選択してください。

2) Compute Engine APIの画面が出てきます。[有効にする]をクリックします。

3)VMインスタンス作成の確認画面が出てきます。[インスタンス作成]のボタンをクリックします。

4) VMインスタンスの作成画面が出てきます。仕様に基づき順次、入力を行います。

① 名前を入力

②リージョンとゾーンを選択します。us-west1, us-west1-b

③マシンタイプの選択 e2-micro

下へスクロールします。

 

5)引き続き、④VMプロビジョニングモデルの詳細設定を開き、「VMインスタンスを移行(推奨)」を選択します。

6) ⑤ブートディスクの変更のために、[変更]ボタンをクリックします。

 

 

7) 右側からポップアップ画面が出てきます。

⑥OSを選択します。Ubuntu 24.04 LTS
・Ubuntu 24.04 LTSは、x86/64, amd64バージョンを選択してください。

⑦ ブートディスクの種類を選択します。標準永続ディスク

⑧ サイズ(GB)を入力します。10GBのままにします。。

⑨[選択]ボタンを押します。

 

7) インスタンス作成画面に戻ります。ブートディスクの内容が変更されていることが確認できます。

最後に、[作成]ボタンを押します。

 

8) VMインスタンスのダッシュボード画面に戻ります。新たにVMインスタンスが作成されたことが確認できます。

 

3. SSHでVMインスタンスに接続

SSHでWindows PCからGCP上のVMインスタンスに接続する方法は、少なくとも3つあります。

  1. Google Consoleを使用する方法
  2. Cloud Shellを使用する方法
  3. Windows PowerShellを使用する方法

a.とb.は、Google Cloud Platformのコンソールの画面からWebを通して接続する方法で、容易に接続ができます。

c.の方法は、Windows側で作成したSSH認証鍵の公開鍵をGCPに登録することでSSH認証を行う方法です。SSH認証鍵の作成とGCPへの登録という手間が発生します。

ここでは、a.から順番に接続方法を説明していきます。

3.1. Google Consoleを使用する方法

まず、Google Consoleを使用する方法です。

1) Google Cloud Patformのコンソール画面から、[→ Compute Engineに移動]をクリックします。

2)VMインスタンスの画面が出てきます。VMインスタンス名の右にある[SSH]を部分をクリックします。

3) 別ウィンドウがポップアップしてきます。[接続]ボタンをクリックします。初回は、認証等で時間がかかります。

また、注意事項としては、ブラウザのポップアップを許可しないと別窓が表示できませんので、クリックしても何も現れません。

4)しばらくすると、別窓にUbuntuのバージョン情報などが表示され、プロンプトが現れます。ここからは、UbuntuにSSHで接続できた状態になりますので、UNIXのコマンドを打てば、普通に認識されます。SSH接続を止める場合には、$ exitを打てば、Ubuntuのターミナルと同じようにポップアップ窓が消えます。

3.2. Cloud Shell を使用する方法

つぎに、Cloud Shellを使用する方法を説明します。この方法は、いうなれば、Google CloudというPCのShellからVMインスタンスにsshで接続するというイメージです。

1) ですので、まず最初にCloud ShellというShellを起動します。Google Cloud Platformのどの画面でも右上にでているShellのマークをクリックします。

2)すると、Web画面の下の方に、Cloud Shellの窓が開きます。これは、まだ、UbuntuのShellでありません。Cloud Shellと呼ばれるgcloudコマンドを使用するShellです。

3) このShellからVMインスタンスにssh接続します。そのためのコマンドは、以下になります。

$ gcloud compute ssh (インスタンス名) –zone (インスタンスのあるゾーン名) [RET]

gcloudコマンドを使ってssh接続します。ここでは、インスタンス名がvmce1で、VMインスタンスの接地するゾーンをus-west1-bとしましたから、

$ gcloud compute ssh vmce1 -zone us-west1-b

と入力しています。

4) すると、こちらも初回は時間がかかりますが、Ubuntuのバージョンメッセージが出てきて、Ubuntuのプロンプトが現れます。

3.3. Windows PowerShellを使用する方法

上記2つは、Webからの接続方法でしたが、最後にWindows PowerShellからのssh接続の方法に関して説明します。

GCPの外部の端末からVMのインスタンスにSSH接続するには、以下の手順が必要になります。

  1. 外部端末で、SSH認証鍵を生成する。
  2. SSH認証鍵の公開鍵を、VMのインスタンスに登録する
  3. VMインスタンスの外部IPを使って、SSH接続を行う。

順に説明します。

3.3.1. 外部端末で、SSH認証鍵を生成する

1) WindowsのPowerShellを起動します。

2) 以下のコマンドを実行して、認証鍵を作ります。

3.3.2. SSH認証鍵の公開鍵を、VMのインスタンスに登録する

1) Compute EngineのVMインスタンスの画面に移動し、SSH接続をする対象のVMインスタンスを選択します。

2) 選択したVMインスタンスの詳細画面が出てきます。上部の[編集]ボタンをクリックします。

 

3) VMインスタンスの編集画面が出てきます。下にスクロールします。

4)SSH認証鍵のところにある[項目を追加]をクリックします。

5) すると、認証鍵を入力する窓が現れますので、そこに、PowerShellで作成したSSH認証会議の公開鍵をコピー&ペーストします。その後、下にある[保存]ボタンをクリックします。

3.3.3. VMインスタンスの外部IPを使って、SSH接続を行う

1) VMインスタンス一覧の画面に戻り、SSHでアクセスする外部IPアドレスを確認します。

2) WindowsのPowerShellに戻り、VMインスタンスの外部IPにSSHで接続します。下記コマンドを入力します。

 

 

 

パスワードを聞いてくるので、鍵認証時に入力したパスワードを入力します。

すると、Ubuntuのメッセージがでてきて、SSHでの接続が完了します。

4. ファイアウォールの設定

以上で、無事にVMインスタンスにSSH接続できるようになりました。ここで、SSHできるIPソースに制限をかけるセキュリティの処置(ファイアウォールの設定)を行います。次の2つの設定を行います。

  1. SSHのIPソースを限定する
  2. IAP に VM インスタンスへの接続を許可する

a.を設定すると、前の項目で試したSSHの3種のうち、Windows PowerShellを使用する方法しか接続できません。

そこで、b.を設定しGoogle Consoleからの接続も許可します。残念ながら、この2つの許可だけでは、Cloud ShellからのSSH接続はできないままです。

(Cloud Shellは、IPアドレスを持っており、そのアドレスが変わらないようであれば、a.の設定のIPアドレスに追加すれば接続できるようになります。変わる可能性がありそうなので、今回は、追加しません)

  1. Google Consoleを使用する方法
  2. Cloud Shellを使用する方法
  3. Windows PowerShellを使用する方法

ファイアウォールの設定は、必ずやっておいた方が良いです。どの方法でもSSHできるということは、VMインスタンスへはどの端末からもSSH接続を許している状態にあります。悪意を持った接続でも通してしまうという状態にありますので、可能な限り厳しい接続限定を行った方が良いです。

4.1. SSHのIPソースを限定する

1)VMインスタンスの選択画面にあるファイアウォールの設定をクリックします。

(左側のメニュのなかの[VPCネットワーク]→[ファイアウォール]からもファイアウォールの設定画面に移動できます)

2) ファイアウォールの一覧の画面が現れますので、その中から、sshの設定をクリックします。

3) ファイアウォールのルールの詳細の画面に移動します。画面上部の[編集]をクリックします。

4) 送信元IPv4範囲の欄に、HPの検索画面で「My IP Address」と入力してでてくるIPアドレスを設定します。複数設定する場合は、カンマで区切って入力します。

入力後、[保存]ボタンをクリックします。

この設定をすることで、ここに書いたIPアドレス以外からのアクセスを受け付けなくなります。そのため、Cloud ConsoleとCloud ShellからのSSH接続のできなくなります。

Cloud Consoleに関しては、「4.2. IAPにVMインスタンスへの接続を許可する」の項目で説明する方法でファイアウォールの設定を行えば、SSH接続が可能になります。

5) ファイアウォール一覧の画面に戻ります。SSHの項目のIP範囲に設定したIPが記載されていることが確認できます。

4.2. IAP に VM インスタンスへの接続を許可するファイアウォールの作成

つぎに、IAPにVMインスタンスへの接続を許可するファイアウォールの作成を行います。IAP(Identity-Aware Proxy)とは、GCPで提供されている、アプリケーションレベルの認証、承認のためのアクセス制御サービスのことです。これを設定することで、Google ConsoleからのSSH接続が可能になります。

4.2.1 ファイアウォールの仕様

項目 仕様
名前 allow-ingress-from-iap
トラフィック方向 上り(内向き)
ターゲット ネットワーク内のすべてのインスタンス
ソースフィルタ 35.235.240.0/20
プロトコルとポート プロトコル:tcp, ポート:22, 3389

4.2.2. ファイアウォールの作成

1) ファイアウォールの一覧画面に移動します。新規のルールを作成するため、画面の上部にある[ファイアウォール ルールを作成]をクリックします。

2)ファイアウォール ルールの作成の画面に移動しますので、順次入力していきます。

① ルールの名前を入力、②トラフィックの方向は上り(内向き)を選択します。その後、下にスクロールします。

3) ③ターゲットから、ネットワーク内のすべてのインスタンスを選択します。④ソースIPの範囲は、35.235.240.0/20を設定します。⑤プロトコルとポートは、[TCP]を選んで、ポート 22, 3389を入力します。これで、RDPとSSHを許可します。

最後に、[作成]をクリックします。

4) ファイアウォール一覧の画面に戻ります。新たに追加したファイアウォールが一覧に上がっていることを確認します。