为什么 vagrant 在将 box_url 选项与 scp 一起使用时不使用我的 ssh 配置

Why wont vagrant use my ssh config when using the box_url option with scp

我正在尝试分发一个打包的基本盒,我想使用我现有的一台全球开发人员可以通过 pem 文件访问的服务器。

我知道 vag运行t 云,但在这种情况下这不是一个选项。

看起来打包的 curl 命令确实支持 scp 但出于某种原因它不尊重我在 ~/.ssh/config 中的值并且它在 vag 时不提供身份文件和用户名运行向上是 运行。

我可以确认以下命令确实有效。

/opt/vagrant/embedded/bin/curl --verbose \
  "scp://myurl.com:/path/to/base.box" --insecure \
  --key ~/.ssh/my-key.pem --user admin: --output test.box

如何将所需的选项传递给 base_url 或使打包版本的 curl 符合我的 ssh 配置文件?

这是我在 vagrantfile

中使用的配置块
  config.vm.define :devbox, primary: true do |devbox|
    devbox.vm.box_download_insecure = true
    devbox.vm.box = "base-box"
    devbox.vm.box_url = "scp://mydomain.com:/path/to/base.box"
  end

任何指导将不胜感激,到目前为止我已经浪费了大约 10 个小时。

在 vagrant github 项目上提交问题后: https://github.com/hashicorp/vagrant/issues/11546

他们已回应并发布了 2.2.9 版本的更新,允许您指定额外的 box 下载选项。

下面的示例中包含所需的必要键,但您可以将任何 curl 参数作为键传递,并将其值作为值传递。

config.vm.box_url = "scp://example.com:/path/to/your/box.box"
config.vm.box_download_options = {
  key: "~/.ssh/secretkey.pem",
  user: "username:" # Important, keep the : for no password
}

在用户名后添加 : 很重要,因为这表示没有密码,因为我们使用的是私钥身份验证。

希望这对其他人有帮助。