Bagaimana cara mengatur ssh dari host ke tamu menggunakan qemu? Saya dapat menggunakan pengalihan port ketika saya mem-boot VM tanpa parameter khusus, sebagai berikut:
/usr/bin/qemu-system-x86_64 -hda ubuntu1204 -m 512 -redir tcp:7777::8001
Tetapi ketika saya mencoba untuk boot menggunakan yang berikut ini:
/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
Saya mendapatkan kesalahan berikut dan VM tidak bisa boot:
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
Harap dicatat bahwa saya dapat mem-boot VM tanpa -net
parameter tanpa masalah, namun, saya ingin mengatur ssh dari host ke guest. ssh dari guest to host berfungsi dengan baik seperti yang diharapkan.
Edit
Saya sudah mencoba menggunakan
-net user,hostfwd=tcp::7777-:8001
sebaik
-net user,hostfwd=tcp::7777:8001
tapi kesalahan tetap ada dan VM tidak bisa boot.
networking
ssh
qemu
pekerjaan
sumber
sumber
Jawaban:
Saya berpikir bahwa kesalahan tidak berasal dari pernyataan -net, tetapi dari:
Pernyataan ini sudah menggunakan port 7777. Untuk penerusan port, with
itu berfungsi dengan baik ketika tidak mengatur saluran serial virtio.
Jika saya mengerti benar, Anda ingin mengatur saluran serial virtio untuk berkomunikasi dari host ke VM menggunakan Unix Domain Socket?
Dalam hal ini, berikut ini dapat melakukan pekerjaan:
EDIT:
Contoh cara terhubung dari host menggunakan ssh ke VM:
Hostforwarding ini memetakan localhost (host) port 10022 ke port 22 pada VM. Setelah VM dimulai seperti ini, Anda dapat mengaksesnya dari localhost sebagai berikut:
Perintah -net nic menginisialisasi kartu antarmuka jaringan virtual yang sangat dasar.
sumber
Warning: vlan 0 with no nics
tetapi ketika saya lakukanifconfig
pada tamu saya hanya melihatlo
dan saya masih mendapatkanssh: connect to host 10.0.2.15 port 22: Connection timed out
ketika saya mencoba ssh; IP yang saya gunakan untuk ssh adalah 10.0.2.15, yang menurutnyaman qemu-system-x86_64
adalah IP yang ditetapkan untuk VM pertama yang di-boot jika IP statis tidak ditetapkan. Dan sekarang tidak ada koneksi internet pada tamu.Coba ini ketika meluncurkan
qemu -redir tcp:2222::22
Bendera tcp: 2222 :: 22 di perintah peluncuran qemu memetakan port 2222 dari mesin host ke port 22 (port ssh default) pada mesin virtual.
Kemudian, cukup sshing ke port 2222 di localhost Anda (mesin host) akan mengarahkan lalu lintas ke port ssh 22 di mesin virtual, yang akan memungkinkan Anda untuk ssh seperti yang biasanya Anda lakukan pada mesin lain.
sumber
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: Catatan: Opsi stand-alone Legacy -tftp, -bootp, -smb dan -redir masih diproses dan diterapkan pada pengguna -net.Konfigurasi OpenSSH diuji pada Buildroot 2016.05, QEMU 2.5.0, host Ubuntu 16.04
Selain penerusan jaringan QEMU, Anda juga perlu mengatur SSH dengan benar, yang akan saya bahas di sini.
Mulai dengan
qemu_x86_64_defconfig
dan aktifkan paket openssh:Kemudian mulai QEMU dengan:
Kemudian pada tamu:
Ubah pengaturan berikut:
Dan restart server:
Karena file ini ada, sshd memulai secara default, ini adalah sumbernya: https://github.com/buildroot/buildroot/blob/2018.02/package/openssh/S50sshd dan operasi startup utama adalah:
Kemudian dari host:
Dalam hal kegagalan, tes pertama bahwa penerusan jaringan bekerja dengan alat tingkat yang lebih rendah daripada sshd: misalnya
nc -l
seperti yang dijelaskan di sini .juga periksa log server pada tamu:
Kemudian pada sistem terakhir Anda harus mengotomatiskan pembuatan file log itu dengan
BR2_ROOTFS_OVERLAY
atauBR2_ROOTFS_POST_BUILD_SCRIPT
: Menyesuaikan sistem file target yang dihasilkan | buildroot.orgsumber
Saya yakin Anda perlu menggunakan
hostfwd=tcp::7777-:8001
atauhostfwd=tcp::7777:8001
sumber