¿Cómo configuro ssh desde el host al invitado usando qemu? Puedo usar la redirección de puertos cuando inicio la VM sin ningún parámetro especial, como se muestra a continuación:
/usr/bin/qemu-system-x86_64 -hda ubuntu1204 -m 512 -redir tcp:7777::8001
Pero cuando trato de arrancar usando lo siguiente:
/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
Me sale el siguiente error y la VM no arranca:
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
Tenga en cuenta que puedo iniciar la VM sin el -net
parámetro sin ningún problema, sin embargo, quiero configurar ssh desde el host al invitado. ssh de invitado a host funciona bien como se esperaba.
Editar
He intentado usar
-net user,hostfwd=tcp::7777-:8001
tanto como
-net user,hostfwd=tcp::7777:8001
pero aún así el error persiste y la VM no arranca.
networking
ssh
qemu
Jobin
fuente
fuente
Respuestas:
Creo que el error no proviene de la declaración -net, sino de:
La declaración ya utiliza el puerto 7777. Para el reenvío de puertos, con
funciona bien cuando no se configura el canal serie virtio.
Si entiendo bien, ¿desea configurar un canal serie virtio para comunicarse desde el host a la VM utilizando un socket de dominio Unix?
En este caso, lo siguiente podría hacer el trabajo:
EDITAR:
Un ejemplo de cómo conectarse desde el host usando ssh a la VM:
Este reenvío de host asigna el puerto localhost (host) 10022 al puerto 22 en la VM. Una vez que la VM se inició de esta manera, puede acceder desde el host local de la siguiente manera:
El comando -net nic inicializa una tarjeta de interfaz de red virtual muy básica.
fuente
Warning: vlan 0 with no nics
pero cuando lo hagoifconfig
en el invitado solo veolo
y sigo apareciendossh: connect to host 10.0.2.15 port 22: Connection timed out
cuando intento ssh; la IP que solía usar ssh es 10.0.2.15, que de acuerdo conman qemu-system-x86_64
la IP asignada a la primera máquina virtual iniciada si no se asigna una IP estática. Y ahora no hay conexión a Internet en el invitado.Pruebe esto al iniciar
qemu -redir tcp:2222::22
El indicador tcp: 2222 :: 22 en el comando de lanzamiento qemu asigna el puerto 2222 de la máquina host al puerto 22 (el puerto ssh predeterminado) en la máquina virtual.
Luego, simplemente enviando ssh al puerto 2222 en su host local (la máquina host) redirigirá cualquier tráfico al puerto ssh 22 en la máquina virtual, lo que debería permitirle ssh como lo haría normalmente con cualquier otra máquina.
fuente
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: Las opciones independientes heredadas -tftp, -bootp, -smb y -redir aún se procesan y aplican al usuario -net.Configuración de OpenSSH probada en Buildroot 2016.05, QEMU 2.5.0, Ubuntu 16.04 host
Además del reenvío de red de QEMU, también debe configurar SSH correctamente, lo que cubriré aquí.
Comience
qemu_x86_64_defconfig
y habilite el paquete openssh:Luego, inicie QEMU con:
Luego en invitado:
Modifique la siguiente configuración:
Y reinicie el servidor:
Debido a que este archivo existe, sshd se inicia por defecto, aquí está la fuente: https://github.com/buildroot/buildroot/blob/2018.02/package/openssh/S50sshd y las operaciones clave de inicio son:
Luego del anfitrión:
En caso de falla, primero compruebe que el reenvío de redes funciona con una herramienta de nivel inferior que sshd: por ejemplo,
nc -l
como se describe aquí .También verifique los registros del servidor en el invitado:
Luego, en el sistema final, debe automatizar la creación de ese archivo de registro con
BR2_ROOTFS_OVERLAY
oBR2_ROOTFS_POST_BUILD_SCRIPT
: Personalizar el sistema de archivos de destino generado | buildroot.orgfuente
Creo que necesitas usar
hostfwd=tcp::7777-:8001
ohostfwd=tcp::7777:8001
fuente