はじめに
VirtualBoxで構築したUbuntu環境に、WindowsのTera TermからSSH接続しようとしたところ、「ポートフォワーディングを設定し、sshdも起動しているのに、接続すると画面が真っ黒(無反応)のまま固まる」という現象に遭遇しました。
試行錯誤の末に無事解決できたので、原因と対処法をまとめます。
環境
- ホストOS: Windows 11
- ゲストOS: Ubuntu (VirtualBox)
- 接続ツール: Tera Term
1. 結論:何が原因だったのか?
根本的な原因は、VirtualBoxの設定で「仮想LANケーブル」が抜けた状態になっていたことでした。
そのため、ゲストOS(Ubuntu)側でいくらSSHサービスを起動しても、通信が外に届かない状態になっていました。
2. トラブルシューティングと解決の手順
ステップ1: Ubuntuのネットワーク状態を確認する
まず、Ubuntu側でネットワークがどうなっているかを以下のコマンドで確認しました。
ip a
すると、以下のような出力になりました。
2: enp0s3: <NO-CARRIER,BROADCAST,MULTICAST,UP> ... state DOWN
注目すべきは NO-CARRIER と state DOWN です。これは「LANケーブルが物理的に抜けていて、ネットワークが動いていない状態」を意味しています。
ステップ2: VirtualBoxで「ケーブル」を接続する
VirtualBoxのネットワーク設定を見直しました。原因をシンプルにするため、今回は接続方式を「NAT」から「ブリッジ」に変更し、合わせてチェック漏れを修正しました。
- 仮想マシンの 「設定」 > 「ネットワーク」 を開く。
- 割り当てを 「ブリッジアダプター」 に変更。
-
「高度」 を展開し、
ケーブル接続(C)にチェックを入れる(←これが外れていたのが原因)。
ステップ3: Ubuntu側でIPv4アドレスを強制取得する
設定変更後、Ubuntu側でIPv6のアドレスしか表示されず、IPv4(192.168.xx.xx)が自動取得できない状態になりました。
そこで、以下のコマンドを実行してルーターにIPアドレスを強制的に要求しました。
sudo dhclient enp0s3
再度 ip a を実行したところ、今度は無事に state UP に変わり、inet 192.168.xx.xx というIPv4アドレスが割り当てられているのを確認できました!
ステップ4: Tera Termから新IPで接続
最後に、Tera Termを起動して以下の通り入力します。
-
ホスト:
[確認したUbuntuのIPv4アドレス](例:192.168.1.XX) -
TCPポート#:
22(※ブリッジ接続のため標準の22ポート)
これで「OK」を押したところ、無事にセキュリティ警告画面が表示され、ユーザー名・パスワードを入力してSSH接続に成功しました!
まとめ(今後の教訓)
今後、仮想マシンにSSH接続できず画面が真っ黒になった場合は、まずゲストOS側で ip a を叩き、
-
state UPになっているか? (NO-CARRIERならVirtualBoxの「ケーブル接続」をチェック) -
inet(IPv4)のIPアドレスがちゃんと割り当てられているか? (なければdhclientを試す)
この2点を確認するのが一番の近道だと学びました。同じ現象で困っている方の参考になれば幸いです。