qemuを使用してホストからゲストとしてSSHを設定するには?仮想マシンを起動するときは、次の特別なパラメータなしでポートリダイレクトを使用できます。
/usr/bin/qemu-system-x86_64 -hda ubuntu1204 -m 512 -redir tcp:7777::8001
しかし、次のように起動しようとすると:
/usr/bin/qemu-system-x86_64 \
-m 1024 \
-name vserialtest \
-hda ubuntu1204 \
-chardev socket,host=localhost,port=7777,server,nowait,id=port1-char \
-device virtio-serial \
-device virtserialport,id=port1,chardev=port1-char,name=org.fedoraproject.port.0 \
-net user,hostfwd=tcp:7777::8001
次のエラーが発生し、仮想マシンは起動しません。
qemu-system-x86_64: -net user,hostfwd=tcp:7777::8001: invalid host
forwarding rule 'tcp:7777::8001'
qemu-system-x86_64: -net user,hostfwd=tcp:7777::8001: Device 'user'
could not be initialized
パラメータなしでVMを問題なく起動できますが、-net
ホストからゲストとしてSSHを設定したいと思います。ゲストからホストへのSSHは期待どおりに機能します。
編集する
使ってみました。
-net user,hostfwd=tcp::7777-:8001
また
-net user,hostfwd=tcp::7777:8001
ただし、エラーが持続し、仮想マシンが起動しません。
ベストアンサー1
私の考えでは、エラーはドアで発生したのではなく、次のようなもの-net
です。
-chardev socket,host=localhost,port=7777,server,nowait,id=port1-char
このポートはこのステートメントですでに使用されています7777
。ポート転送の場合
-net user,hostfwd=tcp::7777-:8001
virtioシリアルチャンネルを設定しなくても正常に動作します。
私が正しく理解したら、Unixドメインソケットを使用してホストから仮想マシンに通信するためにvirtioシリアルチャネルを設定しますか?
この場合、次の操作が実行されます。
/usr/bin/qemu-system-x86_64 \
-m 1024 \
-name vserialtest \
-hda ubuntu1204 \
-chardev socket,path=/tmp/port1,server=on,wait=off,id=port1-char \
-device virtio-serial \
-device virtserialport,id=port1,chardev=port1-char,name=org.fedoraproject.port.0 \
-net user,hostfwd=tcp::7777-:8001
SSHを使用してホストからVMに接続する方法の例:
-net user,hostfwd=tcp::10022-:22
-net nic
このホスト転送は、localhost(ホスト)ポート10022をVMのポート22にマッピングします。仮想マシンがこのように起動すると、次のようにlocalhostからアクセスできます。
ssh vmuser@localhost -p10022
-net nic コマンドは、非常に基本的な仮想ネットワークインタフェースカードを初期化します。