Networking
如何使用 QEMU 從主機 SSH 到訪客?
如何使用 qemu 設置從主機到來賓的 ssh?我可以在沒有任何特殊參數的情況下啟動 VM 時使用埠重定向,如下所示:
/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
我收到以下錯誤,VM 無法啟動:
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
請注意,我可以在沒有
-net
參數的情況下啟動虛擬機而沒有任何問題,但是,我想設置從主機到來賓的 ssh。從客人到主機的 ssh 按預期工作正常。編輯
我試過使用
-net user,hostfwd=tcp::7777-:8001
也
-net user,hostfwd=tcp::7777:8001
但錯誤仍然存在,VM 無法啟動。
我認為錯誤不是來自
-net
語句,而是來自:-chardev socket,host=localhost,port=7777,server,nowait,id=port1-char
該語句已經使用了 port
7777
。對於埠轉發,使用-net user,hostfwd=tcp::7777-:8001
不設置 virtio 串列通道時它工作正常。
如果我理解正確,您想設置一個 virtio 串列通道以使用 Unix 域套接字從主機到 VM 通信?
在這種情況下,以下可以完成這項工作:
/usr/bin/qemu-system-x86_64 \ -m 1024 \ -name vserialtest \ -hda ubuntu1204 \ -chardev socket,path=/tmp/port1,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
如何使用 ssh 從主機連接到 VM 的範例:
-net user,hostfwd=tcp::10022-:22 -net nic
此主機轉發將 localhost(主機)埠 10022 映射到 VM 上的埠 22。像這樣啟動 VM 後,您可以從 localhost 訪問它,如下所示:
ssh vmuser@localhost -p10022
-net nic 命令初始化一個非常基本的虛擬網路介面卡。