You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用libvirt启动Arch Vagrant Box时SSH验证失败致vagrant up挂起

Vagrant + Libvirt启动Arch Linux镜像SSH验证挂起问题解决

问题背景

使用Vagrant的libvirt provider启动archlinux/archlinux镜像时,vagrant up会卡在「等待SSH可用」阶段,但新开窗口执行vagrant ssh能正常建立会话。通过vagrant up --debug查看日志,发现SSH验证失败,提示could not connect to ssh-agent: Agent not configured(但ssh-agent已正常运行),尝试none和publickey认证均失败。已尝试eval $(ssh-agent) -s启动代理并执行ssh-add、添加自定义公钥等操作,均无效果。

原Vagrantfile配置:

Vagrant.configure("2") do |config|
  config.vm.box = "archlinux/archlinux"

  config.vm.provider :libvirt do |domain|
    domain.memory = 2048
    domain.cpus = 4
  end

end

可行解决方案

方案1:强制使用密码认证

Arch Linux官方Vagrant镜像默认启用密码登录(默认密码为vagrant),在Vagrantfile中添加SSH配置,强制使用密码认证跳过密钥和agent问题:

Vagrant.configure("2") do |config|
  config.vm.box = "archlinux/archlinux"

  config.vm.provider :libvirt do |domain|
    domain.memory = 2048
    domain.cpus = 4
  end

  # 指定SSH用户名、密码,禁用自动替换密钥
  config.ssh.username = "vagrant"
  config.ssh.password = "vagrant"
  config.ssh.insert_key = false
end

insert_key = false会阻止Vagrant尝试替换镜像默认密钥,避免破坏原有SSH认证配置。

方案2:直接指定Vagrant内置私钥路径

Vagrant官方镜像通用内置私钥,archlinux/archlinux已预先配置对应公钥,直接指定该密钥路径即可:

Vagrant.configure("2") do |config|
  config.vm.box = "archlinux/archlinux"

  config.vm.provider :libvirt do |domain|
    domain.memory = 2048
    domain.cpus = 4
  end

  # 指定Vagrant内置私钥
  config.ssh.private_key_path = "~/.vagrant.d/insecure_private_key"
end

方案3:禁用SSH Agent转发

部分环境下Agent转发会导致Vagrant识别异常,禁用后可绕过agent相关问题:

Vagrant.configure("2") do |config|
  config.vm.box = "archlinux/archlinux"

  config.vm.provider :libvirt do |domain|
    domain.memory = 2048
    domain.cpus = 4
  end

  # 禁用SSH Agent转发
  config.ssh.forward_agent = false
end

修改配置后执行vagrant destroy -f && vagrant up重新创建虚拟机即可。

内容的提问来源于stack exchange,提问作者Or Karni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:50:24