VirtualBoxでUbuntu Server 24.04のSSH開発環境を構築する完全ガイド

VirtualBox + Ubuntu Server 24.04でSSH開発環境を構築する完全ガイド

2025年現在、開発環境をVirtualBoxで構築する際は、VSCodeのRemote SSH機能を使うのがベストプラクティスとなっています。この記事では、初心者でも確実に環境を構築できるよう、詳細な手順を説明します。

目次

はじめに:なぜSSH接続が必要なのか

VirtualBoxでUbuntu Serverをインストールすると、デフォルトでは黒い画面(コンソール)での操作となります。この環境では以下の問題があります:

  • コピー&ペーストができない
  • 画面スクロールが不便
  • 日本語入力が困難
  • ファイル編集が非効率

SSH接続を設定することで、使い慣れたターミナルやVSCodeから快適に操作できるようになります。

必要なソフトウェアとバージョン

  • VirtualBox: 7.2.2以降(2025年1月時点の最新版)
  • Ubuntu Server: 24.04 LTS(2029年4月までサポート)
  • Windows TerminalまたはTera Term(Windows)
  • Visual Studio Code + Remote SSH拡張機能(推奨)

ステップ1: Ubuntu Server 24.04のダウンロード

  1. Ubuntu公式サイトにアクセス
  2. Ubuntu Server 24.04 LTSをダウンロード(約3GB)
  3. ダウンロードしたISOファイルの場所を覚えておく

ステップ2: VirtualBoxで仮想マシンを作成

仮想マシンの作成

  1. VirtualBoxを起動し、「新規」ボタンをクリック
  2. 以下の設定で仮想マシンを作成:
    • 名前: Ubuntu Server 24.04(任意)
    • タイプ: Linux
    • バージョン: Ubuntu (64-bit)
    • メモリサイズ: 2048MB以上(推奨4096MB)
    • ハードディスク: 新規作成(VDI形式、動的割り当て、20GB以上)

ISOファイルの設定

  1. 作成した仮想マシンを選択し、「設定」をクリック
  2. 「ストレージ」を選択
  3. 「コントローラー: IDE」の下にある空のディスクアイコンをクリック
  4. 右側のディスクアイコンから「ディスクファイルを選択」
  5. ダウンロードしたUbuntu Server 24.04のISOファイルを選択

ステップ3: Ubuntu Serverのインストール

インストール開始

  1. 仮想マシンを起動
  2. 言語選択で「English」を選択(日本語はサーバー版では非推奨)
  3. キーボードレイアウトで「Japanese」を選択
  4. ネットワーク設定はデフォルトのまま「Done」
  5. プロキシ設定は空欄のまま「Done」
  6. ミラーサーバーはデフォルトのまま「Done」

ストレージ設定

  1. 「Use an entire disk」を選択
  2. パーティション設定を確認して「Done」
  3. 「Continue」で確定

アカウント設定(重要)

  1. 以下の情報を入力:
    • Your name: あなたの名前(例:Taro Yamada)
    • Your server’s name: サーバー名(例:ubuntu-server)
    • Pick a username: ユーザー名(例:taro)※小文字のみ
    • Choose a password: パスワード(強固なものを設定)
    • Confirm your password: パスワード再入力

SSHサーバーのインストール(重要)

  1. 「Install OpenSSH server」にチェックを入れる
  2. 「Done」をクリック
  3. Featured Server Snapsは何も選択せずに「Done」

インストールが完了したら「Reboot Now」を選択します。

ステップ4: 初回起動とIPアドレスの確認

仮想マシンにログイン

  1. 再起動後、ユーザー名とパスワードでログイン
  2. 以下のコマンドでIPアドレスを確認:
ip addr show

または

hostname -I

通常、10.0.2.15のようなIPアドレスが表示されます。これはVirtualBoxのNAT内部ネットワークのアドレスです。

SSHサーバーの状態確認

sudo systemctl status ssh

「active (running)」と表示されていることを確認します。もし起動していない場合は:

sudo systemctl start ssh
sudo systemctl enable ssh

ファイアウォールの設定

Ubuntu 24.04ではufwがデフォルトで無効になっていますが、念のため確認:

sudo ufw status

「Status: inactive」と表示される場合は問題ありません。もし有効な場合は:

sudo ufw allow ssh
sudo ufw allow 22/tcp

ステップ5: VirtualBoxでポートフォワーディング設定

この設定が最も重要です。詳しく説明します。

ポートフォワーディングとは

VirtualBoxのNATモードでは、仮想マシンは独自のプライベートネットワーク(10.0.2.0/24)内に存在します。外部(ホストマシン)から直接アクセスできません。ポートフォワーディングを設定することで、ホストマシンの特定ポートへのアクセスを仮想マシンに転送できます。

設定手順

  1. 仮想マシンをシャットダウン:
sudo shutdown -h now
  1. VirtualBoxマネージャーで仮想マシンを選択し、「設定」をクリック
  2. 「ネットワーク」→「アダプター1」を選択
  3. 「高度」をクリックして詳細設定を表示
  4. 「ポートフォワーディング」ボタンをクリック
  5. 「+」アイコンをクリックして新規ルールを追加
  6. 以下の設定を入力:
    • 名前: SSH(任意の名前)
    • プロトコル: TCP
    • ホストIP: 127.0.0.1(または空欄)
    • ホストポート: 2222(任意の1024以上の番号)
    • ゲストIP: 10.0.2.15(仮想マシンのIP)
    • ゲストポート: 22
    ※ホストポートを22にすると、ホストマシンのSSHサービスと競合する可能性があるため、2222を推奨
  7. 「OK」をクリックして設定を保存

ステップ6: SSHで接続テスト

Windowsの場合

Windows Terminal / PowerShellを使用:

ssh -p 2222 ユーザー名@127.0.0.1

例:

ssh -p 2222 taro@127.0.0.1

Tera Termを使用:

  1. Tera Termを起動
  2. 以下を入力:
    • ホスト: 127.0.0.1
    • TCPポート: 2222
  3. 「OK」をクリック
  4. ユーザー名とパスワードを入力

macOS / Linuxの場合

ssh -p 2222 ユーザー名@127.0.0.1

接続時の注意事項

初回接続時に以下のメッセージが表示されます:

The authenticity of host '[127.0.0.1]:2222' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxx
Are you sure you want to continue connecting (yes/no/[fingerprint])?

「yes」と入力してEnterキーを押します。

ステップ7: VSCodeでRemote SSH接続(推奨)

VSCodeのRemote SSH拡張機能を使うと、まるでローカルで開発しているかのような快適な環境が実現できます。

Remote SSH拡張機能のインストール

  1. VSCodeを起動
  2. 左側の拡張機能アイコンをクリック(またはCtrl+Shift+X)
  3. 「Remote – SSH」を検索
  4. Microsoftが提供する「Remote – SSH」をインストール

SSH設定ファイルの作成

  1. VSCodeでコマンドパレットを開く(Ctrl+Shift+P または F1)
  2. 「Remote-SSH: Open SSH Configuration File」を選択
  3. ~/.ssh/configを選択(Windowsの場合:C:\Users\ユーザー名\.ssh\config
  4. 以下の設定を追加:
Host ubuntu-server
    HostName 127.0.0.1
    Port 2222
    User ユーザー名

例:

Host ubuntu-server
    HostName 127.0.0.1
    Port 2222
    User taro
  1. ファイルを保存

VSCodeから接続

  1. コマンドパレットを開く(Ctrl+Shift+P)
  2. 「Remote-SSH: Connect to Host」を選択
  3. 「ubuntu-server」を選択
  4. 新しいウィンドウが開き、パスワードを入力
  5. 接続成功すると、左下に「SSH: ubuntu-server」と表示される

VSCodeで開発環境を整える

接続後、以下の作業が可能になります:

  • ファイルの編集(構文ハイライト付き)
  • ターミナルの統合利用
  • Git操作
  • 拡張機能のリモートインストール
  • デバッグ実行

ステップ8: SSH鍵認証の設定(セキュリティ強化)

パスワード認証よりも安全なSSH鍵認証を設定します。

Windows(PowerShell)での鍵生成

ssh-keygen -t ed25519 -C "your-email@example.com"

公開鍵を仮想マシンにコピー

方法1:手動コピー

  1. 公開鍵の内容を表示:
cat ~/.ssh/id_ed25519.pub
  1. SSH接続して、仮想マシンで以下を実行:
   mkdir -p ~/.ssh
   chmod 700 ~/.ssh
   echo "公開鍵の内容をここに貼り付け" >> ~/.ssh/authorized_keys
   chmod 600 ~/.ssh/authorized_keys

方法2:ssh-copy-idを使用(WSL経由)

ssh-copy-id -p 2222 ユーザー名@127.0.0.1

VSCodeの設定を更新

~/.ssh/configに以下を追加:

Host ubuntu-server
    HostName 127.0.0.1
    Port 2222
    User ユーザー名
    IdentityFile ~/.ssh/id_ed25519

ステップ9: ヘッドレスモードでの起動(便利な使い方)

GUIウィンドウを表示せずにバックグラウンドで仮想マシンを起動できます。

コマンドラインから起動

VBoxManage startvm "Ubuntu Server 24.04" --type headless

停止

VBoxManage controlvm "Ubuntu Server 24.04" poweroff

または、SSH接続して:

sudo shutdown -h now

トラブルシューティング

問題1:SSH接続できない

原因と解決策:

  1. SSHサーバーが起動していない
sudo systemctl start ssh
sudo systemctl enable ssh
  1. ポートフォワーディング設定が間違っている
    • ゲストIPが正しいか確認(通常は10.0.2.15)
    • ホストポートが使用されていないか確認
  2. Windows Defenderファイアウォール
    • VirtualBoxの通信を許可する

問題2:VSCodeで接続エラー

解決策:

  1. known_hostsファイルをクリア:
Remove-Item ~/.ssh/known_hosts
  1. SSH設定ファイルの構文を確認

問題3:仮想マシンが遅い

解決策:

  1. メモリを増やす(4GB以上推奨)
  2. CPUコア数を増やす(設定→システム→プロセッサー)
  3. 仮想化支援機能を有効化(BIOS設定でVT-x/AMD-V)

ネットワーク構成の選択肢

NAT + ポートフォワーディング(本記事の方法)

メリット:

  • 設定が簡単
  • セキュリティが高い
  • ホストマシンからのみアクセス可能

デメリット:

  • LAN内の他のPCからアクセスできない

ブリッジアダプター

メリット:

  • LAN内のどこからでもアクセス可能
  • 実マシンと同じように扱える

デメリット:

  • ルーターが必要
  • IPアドレスを別途消費

ホストオンリーアダプター + NAT(2つのアダプター)

メリット:

  • インターネット接続とホスト接続を両立
  • より柔軟な設定が可能

デメリット:

  • 設定がやや複雑

まとめ

VirtualBox + Ubuntu Server 24.04 + VSCode Remote SSHの組み合わせは、2025年現在最も効率的な開発環境の一つです。この記事の手順に従えば、初心者でも確実に環境を構築できます。

特にVSCodeのRemote SSH機能は革新的で、仮想マシン内での開発をローカル開発と同じ感覚で行えます。これにより、Windows、macOS、Linuxそれぞれの環境で、統一された開発体験を実現できます。

クラウド環境(AWS、Azure、GCP)でも同様のSSH接続が基本となるため、この環境構築の経験は将来的にも役立ちます。

以下の記事は2021年に掲載しましたが、進化の過程の研究のため残してあります。

VirtualBoxを使用してubuntu minimalをインストールしましたが、デスクトップ画面ではなく真っ黒なコンソール画面で操作が困難なので、Tera Termを使用してこの仮想マシンに接続することにしました。クラウドではこの環境が圧倒的多数なので、皆さんも学習のために環境を構築してみてはいかがでしょうか。
それでは進めていきましょう。SSH接続をしたいので、それ相当のソフトがインストールされているか確認します。

sudo systemctl status sshd

導入されていないのでインストールします。

sudo apt install ssh

ファイアーウォールでポート開放状態がどうなっているかの確認もします。
inactiveと表示されたので、インストール済みではあるが起動はしていないので接続を拒否されることはないことがわかりました。

sudo ufw status

次はVirtualBox自体に設定をするのでOSをシャットダウンします。シャットダウン前に、この仮想マシンのIPアドレスをメモしておきます。

VirtualBoxで設定をクリックします。ネットワークを選択し、アダプタータブにある「高度」をクリックして詳細を表示します。

ここにあるポートフォワーディングを利用します。ポートフォワーディングを設定されたポートは、対応付けられた別のアドレスポートの窓口として機能し、外部との間で送受信されるパケットはすべて自動的に転送されるので、仮想マシンにSSH接続が可能となります。

ルールを新規で作成します。名前は任意で決め、ホストIPに操作しているPCのIPアドレスを入力します。IPアドレスはコマンドプロンプトで次のコマンドを入力して調べます。

ipconfig

ホストポートは5050としました。ゲストIPには仮想マシンのIPアドレスを入力し、ゲストポートは22を入力します。

これで操作しているPCと、VirtualBoxの仮想マシンのIPアドレスが送受信可能となりました。
仮想マシンを起動します。この時、Windows Defenderによる警告が表示されたら、アクセスを許可します。

本当に送受信が可能になったのかをコマンドプロンプトで確認します。

telnet 192.168.26.105 5050

OpenSSHの表示がされ接続が確認できました。

Tera Termを開き、ホストとTCPポートを次のように記入します。

ホスト:user@192.168.26.105
TCPポート:5050

OKボタンを押すと認証画面が表示されるので、仮想マシンのubuntuのユーザー名とパスワードを入力してログインします。

せっかくなので認証鍵による接続もしてみます。
仮想マシンにあとから必要になるディレクトリを作成しておきます。
ホームに.sshというディレクトリを作成し、適切なアクセス権を付与します。

mkdir .ssh

ディレクトリのパーミッションを700変更(オーナーのみ読み込み、書き込み、実行が可能)
chmod 700 .ssh

今度は、Tera Termの設定タブにある「SSH鍵作成」をクリックします。「生成」を押して公開鍵と秘密鍵を保存します。

公開鍵の拡張子は.pubで、これを仮想マシンに転送します。
転送するにもTera Termの機能で可能です。ファイルタブにあるSSH SCPがそれにあたります。
上段にある「From」の部分に先ほど生成した拡張子が.pubの公開鍵を読み込んできます。
「To」の部分は空白にしました。空白の時は、ファイルは今いるディレクトリに転送されます。

.pubファイルを先ほど作成した.sshディレクトリに、違うファイル名でコピーします。作成したファイルにも適切な権限を設定します。

公開鍵を.sshディレクトリのauthorized_keysというファイル名でコピーする。
cat id_rsa.pub >> .ssh/authorized_keys

ファイルauthorized_keysのパーミッションを600変更(オーナーのみ読み込み、書き込み可能)
chmod 600 .ssh/authorized_keys

転送した公開鍵は不要になったので削除する。
rm id_rsa.pub

Tera Termで接続の際、今度は鍵を使用する接続をします。秘密鍵を選択して接続します。

コメント

タイトルとURLをコピーしました