Comment configurer ssh de l'hôte à l'invité en utilisant qemu? Je peux utiliser la redirection de port lorsque je démarre la machine virtuelle sans aucun paramètre spécial, comme suit:
/usr/bin/qemu-system-x86_64 -hda ubuntu1204 -m 512 -redir tcp:7777::8001
Mais quand j'essaie de démarrer en utilisant ce qui suit:
/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
J'obtiens l'erreur suivante et la machine virtuelle ne démarre pas:
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
Veuillez noter que je suis capable de démarrer la machine virtuelle sans le -net
paramètre sans aucun problème, cependant, je veux configurer ssh de l'hôte à l'invité. ssh de l'invité à l'hôte fonctionne bien comme prévu.
modifier
J'ai essayé d'utiliser
-net user,hostfwd=tcp::7777-:8001
aussi bien que
-net user,hostfwd=tcp::7777:8001
mais l'erreur persiste et la machine virtuelle ne démarre pas.
networking
ssh
qemu
jobin
la source
la source
Réponses:
Je pense que l'erreur ne vient pas de l'instruction -net, mais de:
L'instruction utilise déjà le port 7777. Pour la redirection de port, avec
cela fonctionne bien lorsque vous ne configurez pas le canal série virtio.
Si je comprends bien, vous souhaitez configurer un canal série virtio pour communiquer de l'hôte à la machine virtuelle à l'aide d'un socket de domaine Unix?
Dans ce cas, les éléments suivants pourraient faire le travail:
MODIFIER:
Un exemple de la façon de se connecter de l'hôte à l'aide de ssh à la machine virtuelle:
Cette transmission d'hôte mappe le port 10022 de l'hôte local (hôte) au port 22 sur la machine virtuelle. Une fois que la machine virtuelle a été démarrée comme ceci, vous pouvez y accéder à partir de l'hôte local comme suit:
La commande -net nic initialise une carte d'interface réseau virtuelle très basique.
la source
Warning: vlan 0 with no nics
mais quand je le faisifconfig
sur l'invité, je ne vois quelo
et je reçois toujoursssh: connect to host 10.0.2.15 port 22: Connection timed out
quand j'essaie de ssh; l'IP que j'ai utilisé pour ssh est 10.0.2.15, qui, selon,man qemu-system-x86_64
est l'IP attribuée à la première machine virtuelle démarrée si l'IP statique n'est pas attribuée. Et maintenant, il n'y a pas de connexion Internet sur l'invité.Essayez ceci lors du lancement
qemu -redir tcp:2222::22
L'indicateur tcp: 2222 :: 22 dans la commande de lancement qemu mappe le port 2222 de la machine hôte au port 22 (le port ssh par défaut) sur la machine virtuelle.
Ensuite, il suffit de sshing vers le port 2222 de votre hôte local (la machine hôte) pour rediriger tout le trafic vers le port ssh 22 de la machine virtuelle, ce qui devrait vous permettre de ssh comme vous le feriez normalement avec n'importe quelle autre machine.
la source
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: Remarque: les options autonomes héritées -tftp, -bootp, -smb et -redir sont toujours traitées et appliquées à l'utilisateur -net.Configuration OpenSSH testée sur Buildroot 2016.05, QEMU 2.5.0, hôte Ubuntu 16.04
Outre la redirection de réseau QEMU, vous devez également configurer correctement SSH, que je couvrirai ici.
Commencez avec
qemu_x86_64_defconfig
et activez le paquet openssh:Ensuite, démarrez QEMU avec:
Puis sur invité:
Modifiez les paramètres suivants:
Et redémarrez le serveur:
C'est parce que ce fichier existe que sshd démarre par défaut, voici la source: https://github.com/buildroot/buildroot/blob/2018.02/package/openssh/S50sshd et les principales opérations de démarrage sont:
Puis de l'hôte:
En cas d'échec, testez d'abord que le transfert de réseau fonctionne avec un outil de niveau inférieur à sshd: par exemple
nc -l
comme décrit ici .vérifiez également les journaux du serveur sur l'invité:
Ensuite, sur le système final, vous devez automatiser la création de ce fichier journal avec
BR2_ROOTFS_OVERLAY
ouBR2_ROOTFS_POST_BUILD_SCRIPT
: Personnalisation du système de fichiers cible généré | buildroot.orgla source
Je crois que vous devez utiliser
hostfwd=tcp::7777-:8001
ouhostfwd=tcp::7777:8001
la source