无法通过 ssh 进入 qemu 中的 arch linux live 环境

无法通过 ssh 进入 qemu 中的 arch linux live 环境

我在 qemu vm 中启动了 arch linux,客户机端口 22 连接到主机端口 60022,在客户机中设置了 root 密码,并在客户机中编辑了 sshd 配置以允许 root 登录并将日志级别设置为调试。然后我在客户机上启动了 sshd,并尝试使用 从主机登录客户机。ssh [email protected] -p 60022 -vvv

什么都没发生。

journalctl -xe客户机上显示 sshd 已启动并监听客户机端口 22,但根本没有显示任何有关尝试连接的信息。在主机上,-vvv给出了大量输出,但它清楚地告诉我它已连接到客户机,列出了其 id 文件和版本,然后等待两分钟才说kex_exchange_identification: read: Connection reset by peer放弃。同样,客户机 journalctl 没有报告任何连接尝试。

我可以从客户机 ping 外部网站,所以我知道互联网设置正确。当日志文件已经存在时,我不知道 journalctl 这个讨厌的命令有什么用处。

ssh如果我尝试连接到端口 60021 或 60022 以外的任何端口,它会立即失败,而不是等待 2 分钟,而且在 60022 上,它在输出中显示“连接已建立” -vvv,所以我知道主机可能正在连接到客户机。但客户机 sshd 工作不尽如人意,因为它甚至不会立即拒绝除 root 之外不存在的用户名。

我的完整 qemu 命令是 qemu-system-x86_64 -netdev user,id=n0 -device rtl8139,netdev=n0 -enable-kvm -machine q35,accel=kvm -device intel-iommu -cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time -nic user,hostfwd=tcp::60022-:22 -m 8G -smp 2 -cdrom ~/Downloads/archlinux-2020.09.01-x86_64.iso ~/vmimgs/lfs.qcow2

我如何通过 ssh 进入我的虚拟机?(另请参阅这个问题大约 4 年前,一位用户遇到了同样的问题,但使用 virtualbox,没有提供解决方案。)

答案1

事实证明,尽管许多来源使用 qemu 的多种网络选项,但它们可能会互相干扰。切换到 可以-nic user,id=vmnic,hostfwd=tcp::60022-:22完美运行,既允许通过该端口上的 tcp 连接进行 ssh 传输,也允许从客户操作系统使用互联网。请注意,这有id=vmnicid=n0或任何其他选项现在都可以使用,因为这是唯一引用 id 的选项。 hostfwd=tcp:127.0.0.1:60022-:22也可以。 ::localhostipv6 中,127.0.0.1在 ipv4 中,但两者都应该可以工作。

我的完整命令现在是qemu-system-x86_64 -bios /usr/share/ovmf/x64/OVMF.fd -enable-kvm -machine q35,accel=kvm -device intel-iommu -cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time -nic user,id=vmnic,hostfwd=tcp::60022-:22 -m 8G -smp 2 ~/vmimgs/lfs.qcow2。添加的-bios选项和删除的-cdrom选项对于进入客户机并不直接重要ssh,但是从 qcow 而不是 iso 启动可以让 ssh 配置(如启动时运行或用户公钥)保留下来。

相关内容