Jak skonfigurować ssh z hosta na gościa za pomocą qemu? Jestem w stanie użyć przekierowania portu, gdy uruchamiam maszynę wirtualną bez żadnych specjalnych parametrów, w następujący sposób:
/usr/bin/qemu-system-x86_64 -hda ubuntu1204 -m 512 -redir tcp:7777::8001
Ale kiedy próbuję uruchomić komputer za pomocą:
/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
Otrzymuję następujący błąd i maszyna wirtualna nie uruchamia się:
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
Pamiętaj, że jestem w stanie uruchomić maszynę wirtualną bez -net
parametru bez żadnych problemów, jednak chcę skonfigurować ssh z hosta na gościa. ssh od gościa do hosta działa zgodnie z oczekiwaniami.
Edytować
Próbowałem użyć
-net user,hostfwd=tcp::7777-:8001
jak również
-net user,hostfwd=tcp::7777:8001
ale błąd nadal występuje, a maszyna wirtualna nie uruchamia się.
networking
ssh
qemu
Praca w
źródło
źródło
Odpowiedzi:
Myślę, że błąd nie pochodzi z instrukcji -net, ale z:
Instrukcja używa już portu 7777. Do przekierowania portów, za pomocą
działa dobrze, gdy nie konfigurujesz kanału szeregowego virtio.
Jeśli dobrze rozumiem, chcesz skonfigurować kanał szeregowy virtio do komunikacji między hostem a maszyną wirtualną przy użyciu uniksowego gniazda domeny?
W takim przypadku zadanie może wykonać:
EDYTOWAĆ:
Przykład połączenia z hosta za pomocą ssh z maszyną wirtualną:
To przekazywanie hosta mapuje port 10022 hosta lokalnego (hosta) na port 22 na maszynie wirtualnej. Po uruchomieniu maszyny wirtualnej w ten sposób możesz uzyskać do niej dostęp z hosta lokalnego w następujący sposób:
Polecenie -net nic inicjuje bardzo podstawową wirtualną kartę interfejsu sieciowego.
źródło
Warning: vlan 0 with no nics
ale kiedy to zrobięifconfig
na gościu, widzę tylkolo
i wciąż otrzymuję,ssh: connect to host 10.0.2.15 port 22: Connection timed out
gdy próbuję ssh; IP, którego użyłem do ssh to 10.0.2.15, co zgodnie z tymman qemu-system-x86_64
jest IP przypisanym do pierwszej VM uruchomionej, jeśli statyczny IP nie jest przypisany. A teraz gość nie ma połączenia z Internetem.Wypróbuj to podczas uruchamiania
qemu -redir tcp:2222::22
Flaga tcp: 2222 :: 22 w poleceniu uruchomienia qemu odwzorowuje port 2222 komputera hosta na port 22 (domyślny port ssh) na maszynie wirtualnej.
Następnie po prostu sshing do portu 2222 na twoim hoście lokalnym (maszynie hosta) przekieruje wszelki ruch do portu ssh 22 na maszynie wirtualnej, co powinno pozwolić ci na ssh, tak jak normalnie na każdej innej maszynie.
źródło
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: Uwaga: Starsze autonomiczne opcje -tftp, -bootp, -smb i -redir są nadal przetwarzane i stosowane do użytkownika -net.Konfiguracja OpenSSH przetestowana na Buildroot 2016.05, QEMU 2.5.0, host Ubuntu 16.04
Oprócz przekierowywania sieci QEMU, musisz również poprawnie skonfigurować SSH, co omówię tutaj.
Zacznij od
qemu_x86_64_defconfig
i włącz pakiet openssh:Następnie uruchom QEMU za pomocą:
Następnie na gościu:
Zmodyfikuj następujące ustawienia:
I zrestartuj serwer:
To dlatego, że istnieje ten plik, który domyślnie uruchamia się sshd, oto źródło: https://github.com/buildroot/buildroot/blob/2018.02/package/openssh/S50sshd, a kluczowymi operacjami uruchamiania są:
Następnie z hosta:
W przypadku awarii najpierw sprawdź, czy przekazywanie sieciowe działa z narzędziem niższego poziomu niż sshd: np.
nc -l
Jak opisano tutaj .sprawdź także dzienniki serwera gościa:
Następnie w systemie końcowym powinieneś zautomatyzować tworzenie tego pliku dziennika za pomocą
BR2_ROOTFS_OVERLAY
lubBR2_ROOTFS_POST_BUILD_SCRIPT
: Dostosowanie wygenerowanego docelowego systemu plików | buildroot.orgźródło
Uważam, że musisz użyć
hostfwd=tcp::7777-:8001
lubhostfwd=tcp::7777:8001
źródło