Windows上で、QEMUを使って、FreeBSDを動かす話のつづきです。
今日は、ホストOSのWindows側から、ゲストOSのFreeBSDへ、sshでログインできるようにします。
QEMUで使えるネットワーク機能は、何種類かあるようですが、ここでは、「user mode network stack」を利用します。このモードは、VMWareとかが提供する機能にくらべたら、かなり機能が限定されているように感じられます(別のモードで、いろいろ凝ったことができるらしいけど、user modeが一番簡単に使えるので楽)。
QEMUに付属のqemu-doc.htmlの「3.7.2 Using the user mode network stack」にいろいろ書いてありますが、こんなネットワークトポロジーになっています。10.0.2.24でSamba(SMB)サーバを動かす機能があるようですが、ホストOSがLinuxのときでSambaを動かしておくこと、みたいなことが書いてあったので、使わないことにしておきます。
ものはいいようというか、防火壁(ファイアウォール・firewall)とはよくいったもので、ようするに、ゲストOSとホストOSの間で、自由に通信することはできません。つまり、NATとか使えないよ、ということです。
それでは、使い物にならないので、いくつかの通信手段が用意されています。その1つが、QEMUを実行するときに「-redir」オプションを指定することで、QEMUの世界の中の特定のIPアドレスの特定のポート番号を、ホストOS側から見えるようにできます。
-redirの書式はこんな感じらしいですが、
-redir [tcp|udp]:host-port:[guest-host]:guest-port
とりあえず、「-redir tcp:10022::22」と指定します。これで、ゲストOSのポート番号22へ、ホストOSのポート番号10022を通じてつながることになります。
22番は、SSHのポート番号です。
qemu-freebsd.batのQEMUを実行する行を、以下のように書き換えて、実行します。
START qemu.exe -L . -m 128 -hda freebsd.img -enable-audio -localtime -redir tcp:10022::22
■WindowsにSSH2クライアント「PuTTY」をインストールする
ここからPuTTYをダウンロードします。
PuTTY で ISO 2022 による日本語入力・表示を可能にするパッチ
接続先は、-redirでひっぱってきたポートになるので、ホストのIPアドレスが「127.0.0.1」で、ポート番号が10022になります。
そのほか、個人的な好みの設定を列挙しておきます。設定したら、「セッション」のところで、設定内容を保存しておきます。ここではとりあえずfreebsdという名前で保存しています。
Delキー、BackSpaceキー関係の設定は、これが好きです。
そのほかは、のちのち、設定していくことにします。
開くボタンをクリックすれば、SSHのセッションがはじまります。RSA鍵とかがまだ何もないので、普通のパスワード認証でログインします。
これで、Windowsから、QEMU上で動作しているFreeBSDにログインできるようになりました。
SSHクライアントとしてPuTTYを使いましたが、Cygwinのsshでもログインできますし、teratermのttsshでも、FreeBSD側でSSH1を許可するように設定変更すれば可能です。
■FreeBSD側の設定
忘れていました。普段使うユーザーから、suでrootになれるようにしておきます。
QEMUのコンソール画面から、rootでログインします(デフォルト設定では、SSHではrootでログインできなくなっている)。
/etc/groupファイルを編集します。
- wheelグループに、普段使うユーザー(ここではnhh)を追加
- 縁起物なのでoperatorグループにも、同ユーザーを追加
こんな感じです。
# $FreeBSD: src/etc/group,v 1.31 2004/06/23 01:32:28 mlaier Exp $
#
wheel:*:0:root,nhh
daemon:*:1:
kmem:*:2:
sys:*:3:
tty:*:4:
operator:*:5:root,nhh
mail:*:6:
bin:*:7:
news:*:8:
以下略
operatorグループに入っているユーザーは、shutdown -p nowが実行できるようになります。
sshでログインし、suできることを確認します。
> su
Password:
freebsd#
さあ、とりあえずこれで、QEMUのコンソールウィンドウがなくても、FreeBSD上の作業ができるようになりました。あと、日本語のとおるPuTTYなら、日本語もちゃんと読み書きできます。
さて、今日は木曜日で忙しいのでここまで。
■今後の予定
今思いついたのは、こんなところです。突然、気が変わる可能性もありますが・・・
- FreeBSD側から、インターネットにアクセスして、FreeBSDのパッケージをインストールできるようにする
- FreeBSDにApache+WebDAVを動かして、Windowsとの間でファイル交換ができるようにする