やりたいこと
VirtualBox上で動かしているLinux(ゲストOS)をwindows(ホストOS)からSSH接続して操作したい。
手順
- VirtualBoxを起動し、対象の仮想マシンを選択
- 設定 → ネットワーク → アダプター1 を選択し、「NAT」にする
- 「詳細」→「ポートフォワーディング」をクリック
- 新しいルールを追加し、以下のように入力:
名前 | プロトコル | ホストIP | ホストポート | ゲストIP | ゲストポート |
---|---|---|---|---|---|
SSH | TCP | 空欄 | 2222 | 空欄 | 22 |
これでwindowsから以下のコマンドで、virtualbox上のLinuxOSに接続できる。
ssh -p 2222 LinuxOSのユーザー名@localhost
LinuxOS側のユーザーにパスワードがかかってる場合は、このコマンドの後に聞かれるので入力。あと初回接続時にはknownhostに追加する流れになるので、その通りにやる。
ポートフォワーディングについて
ポートフォワーディングとは
外から来た通信を、内側の特定の機器やサービスに中継する仕組み。
イメージ図
あなたのPC(ホスト): ポート2222にアクセスが来る
↓
VirtualBoxがルールを見て転送する
↓
ゲストLinux: ポート22(SSH)で受け取る
ポートフォワーディングを設定する理由
-
NATの内側にいる機器(仮想マシンなど)に直接アクセスできないから
-
だから「このポートに来たら、こっちに回してね」とルールを作る
なぜポート2222を使うのか
ポート2222を使うのは「よく使われる慣例」かつ「ホストの22番を避ける」ためであり、本質は「ホスト側の空きポートでゲストの22番に中継する」ということ。
NATとは
「NAT(Network Address Translation)」とは、ゲストOS(仮想マシン)に仮想的なインターネット接続を提供する方式。
PS4とか、オンラインで遊べるゲーム機器にはこれの設定があるので、これを例に役割をざっくりまとめる。
NATの役割(PS4編)
- PS4はホテルの部屋、ルーターはホテルの受付係
- PS4がオンラインゲーム(例:CoD)を始めるとき、ホテルの受付係(ルーター)に「外に出たい」と言う
- NATはそのとき、ホテルの部屋番号(プライベートIP)を隠して、共有の玄関(グローバルIP)から出す
NATの制限
NATタイプ3
外のプレイヤーがPS4に招待を送っても、ホテルの受付(ルーター/NAT)が部屋番号(プライベートIP)を知らされていないので、誰に届けるか分からず、通信が届かない・マッチできない。
対策はポート開放やUPnPを行って、ホテルの受付に「この種類の招待状が来たら、○○号室に届けて」と転送ルール(ポートフォワーディング)を教えること。
NATタイプ1(または2)
このルールが設定された状態なので、招待がちゃんとPS4に届く=マッチしやすい・部屋も立てられる。
コメント