はじめに (対象読者・この記事でわかること)

この記事は、VirtualBoxを使ってWindows環境にLinux仮想環境を構築したいと考えている方や、Windows上で手軽にUbuntuを試したいWindowsユーザーを対象としています。また、SSH接続を通じて仮想マシンとホストPCを連携させ、より快適な開発・学習環境を構築したい方にも役立つでしょう。

この記事を読むことで、Oracle VirtualBoxのインストールからUbuntu Serverのセットアップ、さらにWindows 10ホストPCからそのUbuntu仮想マシンへSSH接続するまでの一連の流れを、具体的な手順に沿って習得できます。これにより、Windows環境を汚すことなく、堅牢で柔軟なLinux開発・学習環境を手に入れることが可能になります。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。

  • Windows 10の基本的な操作
  • インターネット接続環境
  • 基本的なPC操作(ファイルのダウンロード、ソフトウェアのインストールなど)

仮想化技術とSSH接続の基礎知識

ここでは、本記事で扱うVirtualBoxとSSH接続の概要について解説します。なぜこれらの技術が必要とされ、どのような利点があるのかを理解することで、よりスムーズに環境構築を進められるでしょう。

VirtualBoxとは?

VirtualBoxは、Oracle社が提供する無償のオープンソース仮想化ソフトウェアです。Windows、macOS、Linuxといった既存のOS(ホストOS)上で、別のOS(ゲストOS)を動かすことができます。これにより、以下のようなメリットがあります。

  • 環境の分離: ホストOSに影響を与えることなく、独立した環境で様々なOSやアプリケーションを試すことができます。
  • 開発・テスト環境: 異なるOSバージョンや設定の環境を簡単に用意できるため、ソフトウェア開発やテストにおいて非常に有用です。
  • 学習: LinuxなどのOSを安全に、そして手軽に学習するのに最適です。不要になれば仮想マシンを削除するだけで済みます。

SSHとは?

SSH(Secure Shell)は、ネットワークを介してリモートのコンピューターに安全に接続し、コマンドを実行するためのプロトコルです。SSHは通信内容を暗号化するため、パスワードや機密情報が盗聴されるリスクを低減し、セキュアなリモート操作を可能にします。

  • セキュアなリモート操作: 暗号化により、パブリックネットワーク上でも安全にサーバーを操作できます。
  • ファイルの転送: SCP(Secure Copy Protocol)やSFTP(SSH File Transfer Protocol)を利用して、ファイルを安全に転送できます。
  • ポートフォワーディング: 特定のポートへのアクセスを、別のコンピューターの特定のポートに転送することができます。

なぜVirtualBoxとSSHを組み合わせるのか?

Windows上に直接Linuxをインストールするデュアルブートは手間がかかり、OSの起動を切り替える必要があるため、WindowsとLinuxを同時に使うことができません。 VirtualBoxを使用すれば、Windows上でUbuntuを仮想マシンとして実行し、同時に利用できます。さらに、SSH接続を組み合わせることで、Windowsの使い慣れたターミナルやIDE(統合開発環境)からUbuntuを操作できるようになり、非常に快適な開発・学習環境が手に入ります。WindowsとLinuxの強みを最大限に活かせる強力な組み合わせと言えるでしょう。

VirtualBoxでUbuntuを構築し、WindowsからSSH接続する具体的な手順

ここからが本記事のメインパートです。VirtualBoxのインストールからUbuntu仮想マシンのセットアップ、そしてWindowsホストからのSSH接続までを、ステップバイステップで解説していきます。

ステップ1: VirtualBoxとUbuntu ISOイメージの準備

まずは、環境構築に必要なソフトウェアをダウンロードします。

1-1. VirtualBoxのダウンロードとインストール

  1. VirtualBox公式サイトへアクセス: Oracle VM VirtualBox公式サイト にアクセスします。

  2. インストーラーのダウンロード: トップページの「Downloads」をクリックし、使用しているホストOSに対応するパッケージ(Windowsの場合「Windows hosts」)を選択してインストーラーをダウンロードします。

    VirtualBoxダウンロード (画像はイメージです。実際の画面とは異なる場合があります。)

  3. VirtualBoxのインストール: ダウンロードしたインストーラー(例: VirtualBox-*.exe)を実行します。基本的には「Next」をクリックしていけば問題ありませんが、途中で「ネットワークインターフェース」のインストールを許可するダイアログが表示された場合は、必ず「はい」を選択してください。これは仮想ネットワークアダプターの構築に必要です。

    VirtualBoxインストール (画像はイメージです。実際の画面とは異なる場合があります。)

1-2. Ubuntu Server ISOイメージのダウンロード

今回は、GUIを持たず軽量で、SSH接続での操作が主となるUbuntu Serverを利用します。

  1. Ubuntu Server公式サイトへアクセス: Ubuntu Server公式サイト にアクセスします。

  2. ISOイメージのダウンロード: 「Option 1: Manual server installation」の下にある「Download Ubuntu Server」ボタンをクリックし、ISOイメージをダウンロードします。最新のLTS(Long Term Support)版を選択することをお勧めします。

    Ubuntu Serverダウンロード (画像はイメージです。実際の画面とは異なる場合があります。)

ステップ2: VirtualBoxでのUbuntu仮想マシンの作成とインストール

次に、VirtualBoxで新しい仮想マシンを作成し、ダウンロードしたUbuntu Serverをインストールします。

2-1. 新規仮想マシンの作成

  1. VirtualBoxを起動: VirtualBoxを起動し、左上の「新規」ボタンをクリックします。

  2. 仮想マシンの設定: 新規仮想マシン作成ウィザードが表示されますので、以下のように設定を進めます。

    • 名前とオペレーティングシステム:
      • 名前: Ubuntu_SSH_Server など、わかりやすい名前を設定します。
      • フォルダー: 仮想マシンの保存先。デフォルトでも構いません。
      • ISO Image: ダウンロードしたUbuntu ServerのISOイメージファイルを選択します。
      • タイプ: Linux
      • バージョン: Ubuntu (64-bit)
      • Skip Unattended Installation にチェックを入れます。

    新規VM作成1 (画像はイメージです。実際の画面とは異なる場合があります。)

    • ハードウェア:
      • ベースメモリー: ホストPCの物理メモリに余裕があれば 2048MB (2GB) 以上を推奨します。最低でも1024MBは確保しましょう。
      • プロセッサー: 1 (初期設定のままでOK)

    新規VM作成2 (画像はイメージです。実際の画面とは異なる場合があります。)

    • 仮想ハードディスク:
      • 仮想ハードディスクを作成する を選択。
      • サイズ: 20GB 程度に設定します。後から拡張も可能です。

    新規VM作成3 (画像はイメージです。実際の画面とは異なる場合があります。)

  3. 作成完了: 「完了」をクリックすると、新しい仮想マシンが作成されます。

2-2. Ubuntuのインストール

  1. 仮想マシンの起動: 作成した仮想マシン(例: Ubuntu_SSH_Server)を選択し、「起動」ボタンをクリックします。

  2. Ubuntuインストーラーの起動: 仮想マシンが起動し、Ubuntuのインストーラーが開始されます。

  3. 言語選択: キーボードで上下カーソルキーを操作し、日本語 を選択して Enter キーを押します。

  4. キーボードレイアウト: 日本語 が選択されていることを確認し、「Done」を選択します。

  5. ネットワーク設定: デフォルトでDHCPによりIPアドレスが自動取得されます。「Done」を選択して進みます。

  6. プロキシ設定: 特にプロキシを使用していない場合は、空白のまま「Done」を選択します。

  7. ミラー設定: デフォルトのミラーアドレスのまま「Done」を選択します。

  8. ストレージ設定: 「Use An Entire Disk」を選択し、デフォルトのディスク設定のまま「Done」を選択します。 「Continue」で変更を適用します。

  9. プロファイル設定:

    • Your name: 任意の表示名(例: Kousukei
    • Your server's name: 仮想マシンのホスト名(例: ubuntu-server
    • Pick a username: ログイン用のユーザー名(重要!SSH接続時に使用します 例: user01
    • Choose a password: パスワードを設定し、もう一度入力します(重要!SSH接続時に使用します)。 入力後、「Done」を選択します。
  10. OpenSSHサーバーのインストール: ここで「Install OpenSSH server」にチェック(スペースキーで選択)を入れて「Done」を選択します。これにより、インストール後にSSHサーバーが自動で導入され、設定の手間が省けます。

    SSHインストール (画像はイメージです。実際の画面とは異なる場合があります。)

  11. 追加ソフトウェア: 不要であれば、そのまま「Done」を選択して進みます。

  12. インストール開始: インストールが開始されます。完了までしばらく待ちます。

  13. インストール完了と再起動: 「Reboot Now」が表示されたら選択して再起動します。再起動時に「Please remove the installation medium, then press ENTER」と表示された場合は、VirtualBoxメニューの「デバイス」->「光学ドライブ」からISOイメージのチェックを外し、「仮想ドライブからディスクを除去」を選択してから Enter キーを押します。

ステップ3: 仮想マシンのネットワーク設定とSSHサーバーの確認

Ubuntuがインストールされたら、WindowsホストからSSH接続できるようにするためのネットワーク設定と、ゲストOS内でのSSHサーバーの確認を行います。

3-1. VirtualBoxのネットワーク設定 (ポートフォワーディング)

今回はNAT(Network Address Translation)接続を利用し、特定のポートをホストPCからゲストOSへ転送(ポートフォワーディング)することでSSH接続を実現します。

  1. 仮想マシンのシャットダウン: Ubuntu仮想マシンが起動している場合は、一度シャットダウンします。 ゲストOS内で sudo shutdown -h now を実行するか、VirtualBoxのウィンドウを閉じて「仮想マシンの状態を保存」ではなく「シャットダウン」を選択します。

  2. 仮想マシンの設定を開く: VirtualBoxマネージャーでUbuntu_SSH_Serverを選択し、「設定」をクリックします。

  3. ネットワーク設定の変更:

    • 左側のカテゴリリストから「ネットワーク」を選択します。
    • 「アダプター1」タブが「NAT」になっていることを確認します。
    • 「高度」を展開し、「ポートフォワーディング」ボタンをクリックします。
  4. ポートフォワーディングルールの追加: ポートフォワーディングルールを追加するためのダイアログが表示されます。以下の内容で新規ルールを追加します。

    • 名前: SSH (任意の名前)
    • プロトコル: TCP
    • ホストIP: 空白 (または 127.0.0.1 と入力しても可。これはホストPCのどのIPアドレスからの接続を受け付けるかを指定します。空白にするとすべてのインターフェースからの接続を受け付けます)
    • ホストポート: 2222 (ホストPCからSSH接続を行う際に指定するポート番号です。OS標準の22番ポートはすでにホストPCの他のサービスで使用されている可能性があるため、衝突しない番号を選びます。任意の空いているポート番号で構いません)
    • ゲストIP: 空白 (または 10.0.2.15 など、ゲストOSのIPアドレス。NATの場合は空白でVirtualBoxが自動的に判断します。)
    • ゲストポート: 22 (Ubuntu仮想マシンのSSHサーバーが待ち受けている標準ポート番号です)

    ポートフォワーディング (画像はイメージです。実際の画面とは異なる場合があります。)

    「OK」をクリックして設定を保存します。

3-2. UbuntuゲストOSでのSSHサーバー確認

設定を適用したら、Ubuntu仮想マシンを起動し、SSHサーバーが正しく動作しているか確認します。

  1. Ubuntu仮想マシンの起動: VirtualBoxマネージャーで仮想マシンを選択し、「起動」をクリックします。

  2. Ubuntuにログイン: 仮想マシンが起動したら、インストール時に設定したユーザー名とパスワードでログインします。

  3. SSHサーバーの起動状態を確認: 以下のコマンドを実行し、SSHサーバーが稼働しているかを確認します。

    bash systemctl status ssh

    active (running) と表示されていれば、SSHサーバーは正常に起動しています。もし inactive と表示されていたら、以下のコマンドで起動します。

    bash sudo systemctl start ssh

    また、システム起動時に自動で起動するように設定するには、以下のコマンドを実行します。

    bash sudo systemctl enable ssh

  4. SSHポートの確認 (オプション): SSHサーバーがポート22で待ち受けているか確認します。net-toolsパッケージがインストールされていない場合は、sudo apt install net-toolsでインストールしてください。

    bash sudo netstat -tuln | grep 22 出力例: tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN のように、ポート22がLISTEN状態であることを確認します。

  5. ゲストOSのIPアドレス確認 (参考情報): NAT接続の場合、ホストPCからはゲストOSの内部IPアドレスに直接アクセスできませんが、念のためゲストOSのIPアドレスを確認しておくと良いでしょう。

    bash ip a 通常は enp0s3 などのインターフェースに 10.0.2.15 のようなIPアドレスが割り当てられているはずです。

ステップ4: WindowsホストからのSSH接続

いよいよWindowsホストPCからUbuntu仮想マシンにSSH接続を試みます。

4-1. SSHクライアントの準備

Windows 10/11には、標準でOpenSSHクライアントが搭載されています。PowerShellやコマンドプロンプトから ssh コマンドが使用できます。

  • コマンドプロンプト/PowerShell: スタートメニューから検索して起動します。

もし ssh コマンドが使えない、またはPuTTYのようなGUIクライアントを使いたい場合は、別途インストールしてください。

4-2. SSH接続の実行

WindowsのコマンドプロンプトまたはPowerShellを開き、以下のコマンドを実行します。

Bash
ssh -p 2222 your_username@127.0.0.1
  • 2222: ステップ3-1で設定したホストポート番号です。
  • your_username: ステップ2-2でUbuntuインストール時に設定したユーザー名です。
  • 127.0.0.1: ホストPCのローカルループバックアドレスです。ポートフォワーディング設定により、このアドレスのポート2222へのアクセスがゲストOSのポート22に転送されます。

初回接続時の確認

初回接続時には、SSHクライアントがサーバーのフィンガープリント(指紋情報)を確認するメッセージが表示されます。

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

「yes」と入力して Enter キーを押します。これにより、ホストPCにサーバーのフィンガープリントが保存され、次回以降はこの確認は表示されなくなります。

パスワード認証

フィンガープリントの確認後、パスワードが求められます。

your_username@127.0.0.1's password:

Ubuntuインストール時に設定したユーザーのパスワードを入力し、Enter キーを押します。(入力中の文字は表示されません)

接続成功!

パスワードが正しければ、Ubuntuのシェルプロンプトが表示されます。これで、WindowsホストからVirtualBox上のUbuntu仮想マシンへのSSH接続が完了しました!

Bash
Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-XX-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Sun Jul 27 10:00:00 JST 2024 System load: 0.0 Usage of /: 2.0% of 19.57GB Memory usage: 7% Swap usage: 0% Processes: 123 Users logged in: 1 IPv4 address for enp0s3: 10.0.2.15 *** System restart required *** Last login: Sun Jul 27 10:00:00 2024 from 10.0.2.2 your_username@ubuntu-server:~$

このプロンプトが表示されたら、Ubuntuを自由に操作できます。

ハマった点やエラー解決

SSH接続がうまくいかない場合、いくつかの原因が考えられます。以下のチェックリストを参考に、問題を特定し解決してください。

エラー例1: ssh: connect to host 127.0.0.1 port 2222: Connection refused

  • 原因: 接続先のポートが閉じているか、SSHサーバーが動作していません。
  • 解決策:
    1. VirtualBox仮想マシンの起動確認: Ubuntu仮想マシンがVirtualBoxで起動しているか確認します。
    2. SSHサーバーの起動確認: UbuntuゲストOS内で systemctl status ssh コマンドを実行し、SSHサーバーが active (running) 状態であることを確認します。もし停止している場合は sudo systemctl start ssh で起動します。
    3. ポートフォワーディング設定の確認: VirtualBoxの仮想マシンの設定で、ポートフォワーディングルールが正しく設定されているか(ホストポート 2222 がゲストポート 22 に転送されているか)を確認します。設定ミスがないか、タイプミスがないかよく見直してください。
    4. ホストポートの衝突: ホストポート 2222 がホストPCの他のアプリケーションで使用されていないか確認します。稀に発生します。別の空いているポート番号(例: 2223)に変更して試すことも有効です。

エラー例2: ssh: connect to host 127.0.0.1 port 2222: Operation timed out

  • 原因: 接続要求が相手に届いていないか、ファイアウォールによってブロックされています。
  • 解決策:
    1. VirtualBoxのネットワーク設定: 仮想マシンのネットワークアダプターがNATに設定されていることを確認します。
    2. ゲストOSのファイアウォール: UbuntuゲストOS内でUFW(Uncomplicated Firewall)などのファイアウォールが有効になっている場合、SSH接続がブロックされている可能性があります。以下のコマンドでポート22を許可します。 bash sudo ufw allow ssh sudo ufw enable または、一時的にファイアウォールを無効にして試すこともできます。 bash sudo ufw disable (ファイアウォールを無効にするのは一時的な診断のためであり、運用時は再度有効にしてください。)
    3. ホストPCのファイアウォール: Windows Defender Firewallなど、ホストPCのファイアウォールがVirtualBoxの通信をブロックしている可能性もごく稀にあります。VirtualBox関連のプロセス(VBoxSVC.exeなど)が許可されているか確認するか、一時的にファイアウォールを無効にして試してください。

エラー例3: Permission denied (publickey,password).

  • 原因: ユーザー名またはパスワードが正しくありません。
  • 解決策:
    1. ユーザー名の確認: ssh コマンドで指定したユーザー名 (your_username) がUbuntuインストール時に設定したユーザー名と一致しているか確認します。
    2. パスワードの確認: 入力したパスワードが正しいか確認します。パスワードは入力中に表示されないため、慎重に入力してください。Caps Lockの状態や、キーボードレイアウトが予期せず変更されていないかも確認します。

その他の確認点

  • ゲストOSのネットワーク疎通確認: Ubuntu仮想マシン内で ping 8.8.8.8 (GoogleのDNSサーバー) を実行し、インターネット接続ができているか確認します。

上記の解決策を一つずつ試すことで、ほとんどのSSH接続の問題は解決できるはずです。

まとめ

本記事では、VirtualBoxを利用してWindows 10ホストPC上にUbuntu Server仮想環境を構築し、そこへSSH接続する方法を詳細に解説しました。

  • VirtualBoxのインストールとUbuntu Serverの準備
  • VirtualBoxでの仮想マシンの作成とUbuntuのインストール手順
  • WindowsホストからのSSH接続を可能にするネットワーク設定(ポートフォワーディング)
  • SSHクライアントを用いた実際の接続方法とトラブルシューティング

この記事を通して、あなたはWindows環境を安全に保ちながら、Linux環境を手軽に利用できる強力な開発・学習基盤を構築できるようになりました。この仮想環境は、Webサーバーの構築、プログラミング学習、特定のLinuxツールの利用など、多岐にわたる用途に活用できます。

今後は、公開鍵認証を用いたよりセキュアなSSH接続設定や、Webサーバー(Apache/Nginx)の構築、Docker環境の導入など、発展的な内容についても記事にする予定です。ぜひ、このUbuntu仮想環境をあなたの学習や開発に役立ててください。

参考資料