QEMUを使用してホストからゲストにSSHをどのように接続しますか?

QEMUを使用してホストからゲストにSSHをどのように接続しますか?

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 コマンドは、非常に基本的な仮想ネットワークインタフェースカードを初期化します。

おすすめ記事