概要
VirtualBoxのネットワーク設定をNATにしたまま、ホストOSからVirtualBox上のVMにssh接続するポートフォワード設定についてまとめます。
実行環境
- macOS Big Sur
- VirtualBox バージョン 6.1.18 r142142 (Qt5.6.3)
- Debian
VirtualBoxの設定
- VirtualBoxマネージャーの画面で対象のVMを選択
- 「設定」→「ネットワーク」を開き、割り当てがNATであることを確認
- 「高度」→「ポートフォワーディング」を開き、新規ルールを追加
- 名前:ssh (なんでもOK)
- プロトコル:TCP
- ホストIP:127.0.0.1(ローカルループバックアドレス)
- ホストポート:3333(任意の数字)
- ゲストIP:空
- ゲストポート:22(VMのsshで使用するポート)
- VMを再起動
Macのターミナルからssh接続
$ ssh 'ユーザー名'@127.0.0.1 -p 'ホストポート'
で接続できます。
自分の場合は
$ ssh rsudo@127.0.0.1 -p 3333
になります。
上手くいかなかった場合は
- VMが起動しているか。
- VMのsshサービスが起動しているか。
- ポート番号が合っているか
あたりを確認してみて下さい。
以下、ポートフォワード設定について興味ある方はどうぞ。
ポートフォワード設定について
まず、 VirtualBoxのデフォルトのネットワーク設定であるNATについて解説します。
NATモードでは、VMはVirtualBox networking engineというVMとホストOSの間にあるルーターを介してインターネットに接続されています。
図のようにVMはルーターの背後にあるので、VMのプライベートIPアドレスを指定しても外部のインターネットやホストOSから接続することはできません。(グローバルIPアドレスはホストOSと同じなので、グローバルIPアドレスを指定しても接続できない)
そこで、VirtualBoxの設定でホストOSの特定のポートに届いた通信をゲストの特定ポートに転送することでホストOSからVMへの通信を可能にするのがポートフォワード設定です。
今回だと、ホストにポート3333が届いたらゲストのポート22に転送するという設定をしています。
まとめ
ポートフォワード設定の仕組みがわからず混乱したのでまとめてみました。
VirtualBoxのマニュアルによるとNAT以外でもホスト→VMの通信が可能になる設定があるようです。
訂正等あればコメントお願いします。