このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:VirtualBoxとssh接続

VirtualBoxとssh接続

 ここでは、VirtualBox上で稼働する仮想マシンに対して、ホストOS側からsshでログインするためのポートフォワーディング設定と実践例を紹介します。


なぜVirtualBox上の仮想マシンへssh接続するのか

 Linuxの検証環境や学習用環境を構築する際、VirtualBoxなどの仮想化ソフトウェアを用いてLinux仮想マシンを手軽に用意するケースが増えています。通常、仮想マシンへはVirtualBoxのコンソール(GUIウィンドウ)から直接ログインできますが、実務環境を想定したり、より自然なサーバ管理操作を行うために、ローカルマシンのターミナルやSSHクライアントからリモートログインしたい場合があります。

 ところが、VirtualBoxのデフォルト設定ではゲストOS(仮想マシン)のネットワークがNATモードとなっており、ホストOSから直接ゲストOSの22/tcp(SSHポート)へアクセスできません。この問題を解決するのが「ポートフォワーディング」という機能です。ポートフォワーディングを設定することで、ホストOS側の特定ポートをゲストOSのSSHポートへ振り向け、ローカルマシンから仮想マシンへSSH接続を可能にします。


ポートフォワーディングとNATモード

 VirtualBoxで作成された仮想マシンはデフォルトでNATモードのネットワークアダプタを使います。NATモードでは、ゲストOSは外部ネットワークにアクセス可能ですが、ホストOS側からはゲストOS内部へ直接アクセスできません。
このような制限を回避するための仕組みがポートフォワーディングです。ポートフォワーディングとは、ホストOSの特定ポートへの接続要求をゲストOS側に転送する機能を指します。

ポートフォワーディングの仕組み

ホストOS側ポート振り向け先
2222/tcp (例)ゲストOSの22/tcp (SSHポート)

 こうすることで、ホストOSのlocalhost:2222へアクセスすると、自動的にゲストOS上の22/tcpへ通信が転送され、sshによる接続が可能となります。


VirtualBoxでのポートフォワーディング設定手順

1.仮想マシンを停止

設定を行うには、対象の仮想マシンを一旦停止します。

2.ネットワーク設定画面を開く

 VirtualBoxマネージャで該当仮想マシンを選択し、「設定」メニューから「ネットワーク」を開きます。

3.NATネットワークのポートフォワーディング設定

 NATモードが選択されているアダプタを確認し、「ポートフォワーディング(P)」ボタンをクリックします。

4.ポートフォワードのルール追加

「+」ボタンで新規ルールを追加します。

  • ホストポート:2222
  • ゲストポート:22

 この設定により、ホストOSでlocalhost:2222へ接続要求を行うと、ゲストOSの22/tcp(SSHサービス)へ転送されます。


SSHクライアントによる接続

 ホストOS側からSSHクライアント(WindowsならPuTTYやTera Term、Linux/macOSならsshコマンド)を用いて、以下のようにアクセスします。

書式(Linux/macOSの例)

ssh <ログインユーザ名>@localhost -p 2222

コマンド例

ssh user01@localhost -p 2222

解説

 -pオプションで接続先ポート(ここでは2222)を指定します。初回接続時にはホスト鍵の確認やパスワード入力が必要です。パスワード認証や公開鍵認証など、平時のSSH接続と同様の手順でログインできます。

Windowsでの接続例(Tera Term)

Tera Termを起動し、Hostname欄にlocalhost、Port欄に2222を入力します。

 「OK」ボタンを押すとSSH接続が始まり、初回接続時にセキュリティ警告が表示されます。「続行」ボタンを押せば、パスワード入力画面へ移行します。

ユーザ名・パスワードを入力して「OK」ボタンをクリックします。

ゲストOSへログインできます。


まとめ

  • VirtualBoxのNATモードではデフォルトでゲストOSへ直接アクセス不可
  • ポートフォワーディング機能を用いて、ホストOSの特定ポート→ゲストOSのSSHポート(22/tcp)へ転送を設定
  • ホストOS上ではssh user01@localhost -p 2222のように-pオプションで転送先ポートを指定して接続
  • WindowsならTera termやPuTTY、Linux/macOSならsshコマンドで簡単にリモートログイン可能

 このように、VirtualBox環境でも簡単な設定でリモートログインが可能となり、仮想マシンの検証環境をより実際的なサーバ運用に近い形で扱うことができます。