ネットにはいくつも解説があるので今更のような気もしますが、Google CloudでVMインスタンスを立ててUbuntu 24.04 LTSをインストールする手順のメモです。

 

いちおう無料枠内で収まるように慎重に設定してはいますが、いついかなる理由で課金されるかは分からないため参考程度としてください。

 

個人的な都合でプロジェクト名をBudibaseと命名していますが、今回の手順とは無関係ですので無視してください。

 

プロジェクトを作成する

プロジェクト名をBudibaseとしてプロジェクトを作成し、プロジェクト選択ツールでプロジェクトをBudibaseに切り替えます。

 

インスタンスを作成する

[ナビゲーションメニュー]-[Cloudの概要]-[ようこそ]に移動し、[VMを作成]をクリックします。

 

Compute Engine APIを有効にします。

 

マシンの構成は以下の設定とします。

  • 名前:ins1
  • リージョン:us-west1(オレゴン)
  • Series:E2
  • マシンタイプ:e2-micro(2 vCPU、1コア、1GBメモリ)

OSとストレージは以下の設定とします。

  • オペレーティングシステム:Ubuntu
  • バージョン:Ubuntu 24.04 LTS x86/64, amd64 noble image
  • ブートディスクの種類:標準永続ディスク
  • サイズ(GB):30

データ保護は以下の設定とします。

  • バックアップなし

 ネットワーキングは以下の設定とします。

  • HTTPトラフィックを許可する にチェック
  • HTTPSトラフィックを許可する にチェック
同じメニュー内にあるネットワーク インターフェースを展開します(赤枠)。Webサーバーを立てないならチェックしなくて良いでしょう。
 

 

外部 IPv4 アドレスを 静的外部IPアドレスを予約 に設定します。ネットワーク サービス ティアが プレミアム となっていることを確認のうえ、[完了]ボタンを押して設定を終了してください。

 

 

名前はとりあえず ins1-nic として予約します。これで外部からの安定したアクセスに必要な静的IPアドレスを貸してもらえます。

 

以上でインスタンスの仕様が決定しました。画面下に表示されている[作成]ボタンを押すとVMインスタンスが作成されます。以下のように料金がかかるように表示されていますが、全ての設定項目が無料枠内での利用となっていれば課金はありません。

 

 

VMインスタンスの一覧にins1が表示されたらサーバーにアクセスできるようになります。

 

SSH接続の準備

SSHの設定をおこなうため、メニュー右上にあるCloud Shellを立ち上げます。

 

以下のコマンドでSSHキーを生成します。usernameは任意のユーザー名を設定してください。途中で訊かれるパスワードとともにSSH接続の際に必要となります。

$ ssh-keygen -t rsa -f ~/.ssh/my-ssh-key -C username

 

生成された秘密鍵の確認をします。

$ sudo cat ~/.ssh/my-ssh-key

 

表示された暗号テキストは、メモ帳などに貼付け、my-ssh-keyというファイル名で保存しておきます。ファイルを保存する際、-----END OPENSSH PRIVATE KEY-----の後ろは改行しておく必要があります。

 

生成された公開鍵の確認をします。

$ cat ~/.ssh/my-ssh-key.pub

 

表示された短めの暗号テキストは、メモ帳などに貼付け、my-ssh-key.pubというファイル名で保存しておきます。

 

公開鍵を登録します。VMインスタンスを編集します。

 

SSH認証鍵を登録します。

 

my-ssh-key.pub の中身をペーストして保存します。

 

以上でSSH接続の準備が整いました。

 

SSH接続のテスト

筆者のPCはWindowsベースのシステムなので、使い慣れたTeraTermを使います。ホストには割り当てられた静的IPアドレス、TCPポートは22番、サービスはSSHを選択します。

 

SSH認証鍵の生成中に決めたユーザ名、パスフレーズを入力し、認証方式ではあらかじめ保存しておいた秘密鍵ファイル my-ssh-key を指定します。

 

無事に接続できると以下のコンソール画面が現れます。

 

以上で、無事にローカルから米国オレゴン州のサーバーにSSH接続できるようになりました。

 

22番ポートを閉鎖する

22番ポートは管理用アクセスポートとしてよく知られているため、攻撃を受けないよう対策する必要があります。ここでは普段は22222番ポートからアクセスすることとして、22番ポートは閉鎖します。

 

ネットワーク インターフェースのdefaultを選択します。

 

続いて、ファイアウォールタブを選択します。

 

[+VPCファイアウォール ルールを作成]をクリックし、ルールを2つ作成します。

 

ルール①

 名前:allow-ssh-22222

 一致したときのアクション:許可

 ターゲットタグ:allow-ssh-22222

 送信元IPv4範囲:0.0.0.0/0

 プロトコルとポート:指定したプロトコル > TCPにチェック > ポート:22222

 

ルール②

 名前:deny-ssh-22

 一致したときのアクション:拒否

 ターゲットタグ:deny-ssh-22

 送信元IPv4範囲:0.0.0.0/0

 プロトコルとポート:指定したプロトコル > TCPにチェック > ポート:22

 

これら2つを作成したらいったんVMインスタンス画面まで戻り、編集をクリックします。

 

ネットワークタグに先ほど作ったタグallow-ssh-2222とdeny-ssh-22を追加して保存します。

 

TeraTermを立ち上げ、22番ポートを使ってログインします。ログインできたら以下のコマンドでファイル sshd_config を編集します。テキストエディタVimの使い方は省略します。

$ sudo vim /etc/ssh/sshd_config

 

22番ポートをコメントアウトし、代わりに22222番ポートを指定し、ファイルを保存します。

#Port 22

Port 22222

 

以上の設定を反映させるため、インスタンスを停止し、再起動します。

$ sudo shutdown -r now

 

再起動したら、TeraTermのTCPポート番号を22222に変更してログインできることを確認してください。これで、22222番ポート経由でSSH接続できるようになりました。

 

最後に、使用しないルールを無効化します。VPCファイアウォール ルールにある default-allow-ssh を選択してください。

 

ファイアウォール ルールの詳細に入ったら、編集ボタンを押して編集モードに入ります。

 

[ルールを無効にする]を展開すると、以下のメニューが現れるので無効に切り替えて保存します。

 

VPCファイアウォール ルール一覧を確認すると、default-allow-sshの行が無効となっていることが分かります。

 

以上で22222番ポートでのSSH接続を許可し、危険な22番ポートを閉鎖しました。その他セキュリティ周りはおいおい設定していくと良いでしょう。

 

インスタンスを削除するときの注意点

静的IPアドレスは貴重な資源ですので、インスタンスを削除して使っていなくても保持しているだけで課金対象となります。

 

不要なインスタンスを削除したときは、同時にナビゲーションメニューのVPCネットワークメニューにて静的IPアドレスを解放しましょう。