Wie richte ich mit qemu ssh vom Host zum Gast ein? Ich kann die Portumleitung wie folgt verwenden, wenn ich die VM ohne spezielle Parameter starte:
/usr/bin/qemu-system-x86_64 -hda ubuntu1204 -m 512 -redir tcp:7777::8001
Aber wenn ich versuche, mit den folgenden Mitteln zu booten:
/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
Ich erhalte die folgende Fehlermeldung und die VM bootet nicht:
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
Bitte beachten Sie, dass ich die VM ohne den -net
Parameter ohne Probleme booten kann. Ich möchte jedoch ssh vom Host zum Gast einrichten. ssh von gast zu gast funktioniert wie erwartet einwandfrei.
Bearbeiten
Ich habe versucht mit
-net user,hostfwd=tcp::7777-:8001
ebenso gut wie
-net user,hostfwd=tcp::7777:8001
Der Fehler bleibt jedoch bestehen und die VM bootet nicht.
networking
ssh
qemu
Job in
quelle
quelle
Antworten:
Ich denke, dass der Fehler nicht von der -net-Anweisung kommt, sondern von:
Die Anweisung verwendet bereits den Port 7777. Für die Portweiterleitung mit
Es funktioniert einwandfrei, wenn der virtuelle serielle Kanal nicht eingerichtet wird.
Wenn ich das richtig verstehe, möchten Sie einen virtuellen seriellen Kanal einrichten, um über einen Unix-Domain-Socket vom Host zur VM zu kommunizieren?
In diesem Fall könnten die folgenden Aufgaben erledigt werden:
BEARBEITEN:
Ein Beispiel für das Herstellen einer Verbindung vom Host mithilfe von ssh zur VM:
Diese Hostweiterleitung ordnet den lokalen Host (Host) -Port 10022 dem Port 22 auf der VM zu. Sobald die VM auf diese Weise gestartet wurde, können Sie wie folgt vom localhost aus darauf zugreifen:
Der Befehl -net nic initialisiert eine sehr einfache virtuelle Netzwerkkarte.
quelle
Warning: vlan 0 with no nics
aber wenn ichifconfig
auf den Gästen sehe ich nur ,lo
und ich bekomme immer noch ,ssh: connect to host 10.0.2.15 port 22: Connection timed out
wenn ich ssh versuchen; Die IP, die ich für ssh verwendet habe, ist 10.0.2.15. Diesman qemu-system-x86_64
ist die IP, die der ersten gebooteten VM zugewiesen wurde, wenn keine statische IP zugewiesen ist. Und jetzt gibt es keine Internetverbindung auf dem Gast.Probieren Sie dies beim Starten an
qemu -redir tcp:2222::22
Das Flag tcp: 2222 :: 22 im Befehl qemu launch ordnet den 2222-Port des Hostcomputers dem Port 22 (dem Standard-SSH-Port) des virtuellen Computers zu.
Wenn Sie dann einfach auf den 2222-Port Ihres lokalen Hosts (der Host-Maschine) sshen, wird jeglicher Datenverkehr auf den ssh-22-Port der virtuellen Maschine umgeleitet, sodass Sie sshen können, wie Sie es normalerweise auf jeder anderen Maschine tun würden.
quelle
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: Hinweis: Legacy-Standalone-Optionen -tftp, -bootp, -smb und -redir werden weiterhin verarbeitet und auf -net-Benutzer angewendet.OpenSSH-Konfiguration getestet auf Buildroot 2016.05, QEMU 2.5.0, Ubuntu 16.04-Host
Neben der QEMU-Netzwerkweiterleitung müssen Sie auch SSH ordnungsgemäß einrichten, worauf ich hier eingehen werde.
Beginnen Sie mit
qemu_x86_64_defconfig
und aktivieren Sie das openssh-Paket:Dann starte QEMU mit:
Dann zu Gast:
Ändern Sie die folgenden Einstellungen:
Und starte den Server neu:
Da diese Datei existiert, startet sshd standardmäßig. Hier ist die Quelle: https://github.com/buildroot/buildroot/blob/2018.02/package/openssh/S50sshd und die wichtigsten Startvorgänge sind:
Dann vom Gastgeber:
Testen Sie im Fehlerfall zunächst, ob die Netzwerkweiterleitung mit einem niedrigeren Tool als sshd funktioniert: z. B.
nc -l
wie hier beschrieben . .Überprüfen Sie auch die Server-Logs auf Gast:
Anschließend sollten Sie auf dem endgültigen System die Erstellung dieser Protokolldatei mit
BR2_ROOTFS_OVERLAY
oder automatisierenBR2_ROOTFS_POST_BUILD_SCRIPT
: Anpassen des generierten Zieldateisystems | buildroot.orgquelle
Ich glaube, Sie müssen
hostfwd=tcp::7777-:8001
oder verwendenhostfwd=tcp::7777:8001
quelle