Как настроить ssh с хоста на гостя с помощью qemu? Я могу использовать перенаправление портов при загрузке виртуальной машины без каких-либо специальных параметров, а именно:
/usr/bin/qemu-system-x86_64 -hda ubuntu1204 -m 512 -redir tcp:7777::8001
Но когда я пытаюсь загрузиться, используя следующее:
/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
Я получаю следующую ошибку, и виртуальная машина не загружается:
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
Обратите внимание, что я могу загружать виртуальную машину без -net
параметров без каких-либо проблем, однако я хочу настроить ssh с хоста на гостя. Ssh от гостя к хосту работает нормально, как и ожидалось.
редактировать
Я пытался использовать
-net user,hostfwd=tcp::7777-:8001
так же как
-net user,hostfwd=tcp::7777:8001
но ошибка все еще сохраняется, и виртуальная машина не загружается.
networking
ssh
qemu
Jobin
источник
источник
Ответы:
Я думаю, что ошибка не в выражении -net, а в:
Оператор уже использует порт 7777. Для переадресации порта, с
он работает нормально, если не настроить последовательный канал virtio.
Если я правильно понимаю, вы хотите настроить последовательный канал virtio для связи от хоста к виртуальной машине с помощью доменного сокета Unix?
В этом случае следующее может сделать работу:
РЕДАКТИРОВАТЬ:
Пример того, как подключиться с хоста с помощью ssh к виртуальной машине:
Эта переадресация хоста сопоставляет порт 10022 локального хоста (хоста) с портом 22 на виртуальной машине. Как только виртуальная машина была запущена следующим образом, вы можете получить к ней доступ с локального хоста следующим образом:
Команда -net nic инициализирует очень простую виртуальную сетевую карту.
источник
Warning: vlan 0 with no nics
но когда я делаюifconfig
на гостевой, я вижу только,lo
и я все еще получаю,ssh: connect to host 10.0.2.15 port 22: Connection timed out
когда я пытаюсь ssh; IP-адрес, который я использовал для ssh, равен 10.0.2.15, который в соответствии сman qemu-system-x86_64
IP-адресом, назначенным первой виртуальной машине, загружается, если статический IP-адрес не назначен. И сейчас нет гостевого подключения к интернету.Попробуйте это при запуске
qemu -redir tcp:2222::22
Флаг tcp: 2222 :: 22 в команде запуска qemu отображает порт 2222 хост-машины на порт 22 (порт ssh по умолчанию) на виртуальной машине.
Затем, просто подключившись к порту 2222 на вашем локальном хосте (хост-машине), вы перенаправите любой трафик на порт ssh 22 на виртуальной машине, что позволит вам использовать ssh, как обычно, на любой другой машине.
источник
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: Примечание. Устаревшие автономные параметры -tftp, -bootp, -smb и -redir по-прежнему обрабатываются и применяются к пользователю -net.Конфигурация OpenSSH протестирована на Buildroot 2016.05, QEMU 2.5.0, хосте Ubuntu 16.04
Помимо переадресации сети QEMU, вам также необходимо правильно настроить SSH, о чем я расскажу здесь.
Начните с
qemu_x86_64_defconfig
и включите пакет openssh:Затем начните QEMU с:
Тогда на гостя:
Измените следующие параметры:
И перезапустите сервер:
Именно потому, что этот файл существует, sshd запускается по умолчанию, вот источник: https://github.com/buildroot/buildroot/blob/2018.02/package/openssh/S50sshd, а ключевые операции запуска:
Тогда от хозяина:
В случае сбоя сначала проверьте, что сетевая переадресация работает с инструментом более низкого уровня, чем sshd: например,
nc -l
как описано здесь .также проверь логи сервера на гостевой:
Затем в финальной системе вы должны автоматизировать создание этого файла журнала с помощью
BR2_ROOTFS_OVERLAY
илиBR2_ROOTFS_POST_BUILD_SCRIPT
: Настройка созданной целевой файловой системы | buildroot.orgисточник
Я считаю, что вам нужно использовать
hostfwd=tcp::7777-:8001
илиhostfwd=tcp::7777:8001
источник