はじめに (対象読者・この記事でわかること)
この記事は、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のダウンロードとインストール
-
VirtualBox公式サイトへアクセス: Oracle VM VirtualBox公式サイト にアクセスします。
-
インストーラーのダウンロード: トップページの「Downloads」をクリックし、使用しているホストOSに対応するパッケージ(Windowsの場合「Windows hosts」)を選択してインストーラーをダウンロードします。
(画像はイメージです。実際の画面とは異なる場合があります。)
-
VirtualBoxのインストール: ダウンロードしたインストーラー(例:
VirtualBox-*.exe)を実行します。基本的には「Next」をクリックしていけば問題ありませんが、途中で「ネットワークインターフェース」のインストールを許可するダイアログが表示された場合は、必ず「はい」を選択してください。これは仮想ネットワークアダプターの構築に必要です。(画像はイメージです。実際の画面とは異なる場合があります。)
1-2. Ubuntu Server ISOイメージのダウンロード
今回は、GUIを持たず軽量で、SSH接続での操作が主となるUbuntu Serverを利用します。
-
Ubuntu Server公式サイトへアクセス: Ubuntu Server公式サイト にアクセスします。
-
ISOイメージのダウンロード: 「Option 1: Manual server installation」の下にある「Download Ubuntu Server」ボタンをクリックし、ISOイメージをダウンロードします。最新のLTS(Long Term Support)版を選択することをお勧めします。
(画像はイメージです。実際の画面とは異なる場合があります。)
ステップ2: VirtualBoxでのUbuntu仮想マシンの作成とインストール
次に、VirtualBoxで新しい仮想マシンを作成し、ダウンロードしたUbuntu Serverをインストールします。
2-1. 新規仮想マシンの作成
-
VirtualBoxを起動: VirtualBoxを起動し、左上の「新規」ボタンをクリックします。
-
仮想マシンの設定: 新規仮想マシン作成ウィザードが表示されますので、以下のように設定を進めます。
- 名前とオペレーティングシステム:
- 名前:
Ubuntu_SSH_Serverなど、わかりやすい名前を設定します。 - フォルダー: 仮想マシンの保存先。デフォルトでも構いません。
- ISO Image: ダウンロードしたUbuntu ServerのISOイメージファイルを選択します。
- タイプ:
Linux - バージョン:
Ubuntu (64-bit) Skip Unattended Installationにチェックを入れます。
- 名前:
(画像はイメージです。実際の画面とは異なる場合があります。)
- ハードウェア:
- ベースメモリー: ホストPCの物理メモリに余裕があれば
2048MB (2GB)以上を推奨します。最低でも1024MBは確保しましょう。 - プロセッサー:
1(初期設定のままでOK)
- ベースメモリー: ホストPCの物理メモリに余裕があれば
(画像はイメージです。実際の画面とは異なる場合があります。)
- 仮想ハードディスク:
- 仮想ハードディスクを作成する を選択。
- サイズ:
20GB程度に設定します。後から拡張も可能です。
(画像はイメージです。実際の画面とは異なる場合があります。)
- 名前とオペレーティングシステム:
-
作成完了: 「完了」をクリックすると、新しい仮想マシンが作成されます。
2-2. Ubuntuのインストール
-
仮想マシンの起動: 作成した仮想マシン(例:
Ubuntu_SSH_Server)を選択し、「起動」ボタンをクリックします。 -
Ubuntuインストーラーの起動: 仮想マシンが起動し、Ubuntuのインストーラーが開始されます。
-
言語選択: キーボードで上下カーソルキーを操作し、
日本語を選択してEnterキーを押します。 -
キーボードレイアウト:
日本語が選択されていることを確認し、「Done」を選択します。 -
ネットワーク設定: デフォルトでDHCPによりIPアドレスが自動取得されます。「Done」を選択して進みます。
-
プロキシ設定: 特にプロキシを使用していない場合は、空白のまま「Done」を選択します。
-
ミラー設定: デフォルトのミラーアドレスのまま「Done」を選択します。
-
ストレージ設定: 「Use An Entire Disk」を選択し、デフォルトのディスク設定のまま「Done」を選択します。 「Continue」で変更を適用します。
-
プロファイル設定:
- Your name: 任意の表示名(例:
Kousukei) - Your server's name: 仮想マシンのホスト名(例:
ubuntu-server) - Pick a username: ログイン用のユーザー名(重要!SSH接続時に使用します 例:
user01) - Choose a password: パスワードを設定し、もう一度入力します(重要!SSH接続時に使用します)。 入力後、「Done」を選択します。
- Your name: 任意の表示名(例:
-
OpenSSHサーバーのインストール: ここで「Install OpenSSH server」にチェック(スペースキーで選択)を入れて「Done」を選択します。これにより、インストール後にSSHサーバーが自動で導入され、設定の手間が省けます。
(画像はイメージです。実際の画面とは異なる場合があります。)
-
追加ソフトウェア: 不要であれば、そのまま「Done」を選択して進みます。
-
インストール開始: インストールが開始されます。完了までしばらく待ちます。
-
インストール完了と再起動: 「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接続を実現します。
-
仮想マシンのシャットダウン: Ubuntu仮想マシンが起動している場合は、一度シャットダウンします。 ゲストOS内で
sudo shutdown -h nowを実行するか、VirtualBoxのウィンドウを閉じて「仮想マシンの状態を保存」ではなく「シャットダウン」を選択します。 -
仮想マシンの設定を開く: VirtualBoxマネージャーで
Ubuntu_SSH_Serverを選択し、「設定」をクリックします。 -
ネットワーク設定の変更:
- 左側のカテゴリリストから「ネットワーク」を選択します。
- 「アダプター1」タブが「NAT」になっていることを確認します。
- 「高度」を展開し、「ポートフォワーディング」ボタンをクリックします。
-
ポートフォワーディングルールの追加: ポートフォワーディングルールを追加するためのダイアログが表示されます。以下の内容で新規ルールを追加します。
- 名前:
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サーバーが正しく動作しているか確認します。
-
Ubuntu仮想マシンの起動: VirtualBoxマネージャーで仮想マシンを選択し、「起動」をクリックします。
-
Ubuntuにログイン: 仮想マシンが起動したら、インストール時に設定したユーザー名とパスワードでログインします。
-
SSHサーバーの起動状態を確認: 以下のコマンドを実行し、SSHサーバーが稼働しているかを確認します。
bash systemctl status sshactive (running)と表示されていれば、SSHサーバーは正常に起動しています。もしinactiveと表示されていたら、以下のコマンドで起動します。bash sudo systemctl start sshまた、システム起動時に自動で起動するように設定するには、以下のコマンドを実行します。
bash sudo systemctl enable ssh -
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状態であることを確認します。 -
ゲスト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を開き、以下のコマンドを実行します。
Bashssh -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接続が完了しました!
BashWelcome 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サーバーが動作していません。
- 解決策:
- VirtualBox仮想マシンの起動確認: Ubuntu仮想マシンがVirtualBoxで起動しているか確認します。
- SSHサーバーの起動確認: UbuntuゲストOS内で
systemctl status sshコマンドを実行し、SSHサーバーがactive (running)状態であることを確認します。もし停止している場合はsudo systemctl start sshで起動します。 - ポートフォワーディング設定の確認: VirtualBoxの仮想マシンの設定で、ポートフォワーディングルールが正しく設定されているか(ホストポート
2222がゲストポート22に転送されているか)を確認します。設定ミスがないか、タイプミスがないかよく見直してください。 - ホストポートの衝突: ホストポート
2222がホストPCの他のアプリケーションで使用されていないか確認します。稀に発生します。別の空いているポート番号(例:2223)に変更して試すことも有効です。
エラー例2: ssh: connect to host 127.0.0.1 port 2222: Operation timed out
- 原因: 接続要求が相手に届いていないか、ファイアウォールによってブロックされています。
- 解決策:
- VirtualBoxのネットワーク設定: 仮想マシンのネットワークアダプターがNATに設定されていることを確認します。
- ゲストOSのファイアウォール: UbuntuゲストOS内でUFW(Uncomplicated Firewall)などのファイアウォールが有効になっている場合、SSH接続がブロックされている可能性があります。以下のコマンドでポート22を許可します。
bash sudo ufw allow ssh sudo ufw enableまたは、一時的にファイアウォールを無効にして試すこともできます。bash sudo ufw disable(ファイアウォールを無効にするのは一時的な診断のためであり、運用時は再度有効にしてください。) - ホストPCのファイアウォール: Windows Defender Firewallなど、ホストPCのファイアウォールがVirtualBoxの通信をブロックしている可能性もごく稀にあります。VirtualBox関連のプロセス(
VBoxSVC.exeなど)が許可されているか確認するか、一時的にファイアウォールを無効にして試してください。
エラー例3: Permission denied (publickey,password).
- 原因: ユーザー名またはパスワードが正しくありません。
- 解決策:
- ユーザー名の確認:
sshコマンドで指定したユーザー名 (your_username) がUbuntuインストール時に設定したユーザー名と一致しているか確認します。 - パスワードの確認: 入力したパスワードが正しいか確認します。パスワードは入力中に表示されないため、慎重に入力してください。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仮想環境をあなたの学習や開発に役立ててください。
参考資料
