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

向Vagrant虚拟机复制文件时SCP被拒绝的问题求助

Vagrant虚拟机SCP传输被拒绝的原因及解决办法

嘿,刚好碰到过类似的问题,来给你捋捋~

问题原因

直接用系统默认的scp命令往Vagrant虚拟机传文件被拒绝,主要踩了这两个坑:

  • SSH参数不匹配:Vagrant会给虚拟机分配非默认的SSH端口(比如常见的2222),而且用专属的私钥文件做身份认证,普通scp没指定这些参数的话,根本连不上虚拟机的SSH服务,自然被拒绝。
  • 用户身份不对:Ubuntu Xenial的Vagrant Box默认用户是vagrant,如果你的scp命令没指定这个用户,大概率用了本地Mac的用户名,虚拟机里根本没有这个用户,认证直接失败。

解决办法

方案1:用vagrant-scp插件(你已经搞定的最优解)

这个插件是Vagrant官方生态里的文件传输工具,完美适配Vagrant的SSH配置,不用手动凑参数,省心到爆:

  1. 先安装插件:
vagrant plugin install vagrant-scp
  1. 上传本地文件到虚拟机,格式超简单:
vagrant scp /本地文件绝对路径/demo.zip :/虚拟机目标路径

比如传到虚拟机的用户目录:

vagrant scp ./demo.zip :/home/vagrant/

方案2:手动配置scp参数(不用装插件的方式)

如果不想加插件,可以从vagrant ssh-config的输出里抠出关键参数,拼到scp命令里:

  1. 先执行vagrant ssh-config,拿到类似这样的日志:

Host default
HostName 127.0.0.1
User vagrant
Port 2222
IdentityFile /Users/你的用户名/.vagrant.d/insecure_private_key
...(其他无关配置可以忽略)

  1. 把这些参数加到scp命令里:
scp -P 2222 -i /Users/你的用户名/.vagrant.d/insecure_private_key ./demo.zip vagrant@127.0.0.1:/home/vagrant/

这里-P对应端口,-i对应私钥文件路径,vagrant@127.0.0.1是正确的登录身份,这样就能顺利传输了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:25:11