Como eu configuro o ssh do host para o convidado usando o qemu? Consigo usar o redirecionamento de porta ao inicializar a VM sem nenhum parâmetro especial, da seguinte maneira:
/usr/bin/qemu-system-x86_64 -hda ubuntu1204 -m 512 -redir tcp:7777::8001
Mas quando tento inicializar usando o seguinte:
/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
Eu recebo o seguinte erro e a VM não inicializa:
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
Observe que eu posso inicializar a VM sem o -net
parâmetro sem problemas, no entanto, desejo configurar o ssh do host para o convidado. O ssh do convidado para o host funciona bem conforme o esperado.
Editar
Eu tentei usar
-net user,hostfwd=tcp::7777-:8001
assim como
-net user,hostfwd=tcp::7777:8001
mas ainda assim o erro persiste e a VM não inicializa.
networking
ssh
qemu
jobin
fonte
fonte
Respostas:
Eu acho que o erro não vem da instrução -net, mas de:
A instrução já usa a porta 7777. Para o encaminhamento de porta, com
funciona bem quando não está configurando o canal serial virtio.
Se bem entendi, você deseja configurar um canal serial virtio para se comunicar do host para a VM usando um soquete de domínio Unix?
Nesse caso, o seguinte poderia fazer o trabalho:
EDITAR:
Um exemplo de como conectar-se do host usando ssh à VM:
Esse encaminhamento de host mapeia a porta 10022 do host local (host) para a porta 22 na VM. Depois que a VM foi iniciada assim, você pode acessá-la a partir do host local da seguinte maneira:
O comando -net nic inicializa uma placa de interface de rede virtual muito básica.
fonte
Warning: vlan 0 with no nics
mas quando faço issoifconfig
no convidado, vejo apenaslo
e ainda recebossh: connect to host 10.0.2.15 port 22: Connection timed out
quando tento ssh; o IP que eu costumava usar no ssh é 10.0.2.15, que de acordo comman qemu-system-x86_64
é o IP atribuído à primeira VM inicializada se o IP estático não estiver atribuído. E agora não há conexão com a internet no hóspede.Experimente isso ao iniciar
qemu -redir tcp:2222::22
O sinalizador tcp: 2222 :: 22 no comando qemu launch mapeia a porta 2222 da máquina host para a porta 22 (a porta ssh padrão) na máquina virtual.
Em seguida, basta fazer o sshing na porta 2222 no host local (a máquina host) redirecionará qualquer tráfego para a porta ssh 22 na máquina virtual, o que deve permitir o ssh como faria normalmente com qualquer outra máquina.
fonte
qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw console=ttyAMA0,115200" -hda 2014-01-07-wheezy-raspbian.img -nographic -redir tcp:2222::22
man qemu-system-x86_64
2.5.0: Nota: As opções independentes herdadas -tftp, -bootp, -smb e -redir ainda são processadas e aplicadas ao usuário -net.Configuração do OpenSSH testada no Buildroot 2016.05, QEMU 2.5.0, host Ubuntu 16.04
Além do encaminhamento de rede QEMU, você também precisa configurar o SSH corretamente, que abordarei aqui.
Comece
qemu_x86_64_defconfig
e ative o pacote openssh:Em seguida, inicie o QEMU com:
Em seguida, no convidado:
Modifique as seguintes configurações:
E reinicie o servidor:
É porque esse arquivo existe que o sshd é iniciado por padrão, aqui está a fonte: https://github.com/buildroot/buildroot/blob/2018.02/package/openssh/S50sshd e as principais operações de inicialização são:
Em seguida, do host:
Em caso de falha, primeiro teste se o encaminhamento de rede está funcionando com uma ferramenta de nível inferior ao sshd: por exemplo,
nc -l
conforme descrito aqui .verifique também os logs do servidor no convidado:
Em seguida, no sistema final, você deve automatizar a criação desse arquivo de log com
BR2_ROOTFS_OVERLAY
ouBR2_ROOTFS_POST_BUILD_SCRIPT
: Customizando o sistema de arquivos de destino gerado | buildroot.orgfonte
Eu acredito que você precisa usar
hostfwd=tcp::7777-:8001
ouhostfwd=tcp::7777:8001
fonte