如何将文件从Vagrant计算机复制到本地主机

时间:2015-09-05 06:43:53

标签: linux vagrant scp

我想将本地文件从Vagrant计算机复制到本地主机,但是收到错误消息:

  

ssh:连接到主机127.0.0.1端口22:拒绝连接

[user@localhost ceil]$ scp -p 2222 vagrant@127.0.0.1:/home/vagrant/devstack/local.conf .
cp: cannot stat ‘2222’: No such file or directory
ssh: connect to host 127.0.0.1 port 22: Connection refused

我也尝试过使用localhost,但仍然遇到同样的错误。

7 个答案:

答案 0 :(得分:43)

另一个选项是cat文件到本地的东西:

vagrant ssh -c "sudo cat /home/vagrant/devstack/local.conf" > local.conf

这也应该适用于需要root权限的文件(流浪的SCP插件似乎不支持)。

答案 1 :(得分:25)

您应该阅读scp的手册页。正确的语法是:

scp -P 2222 vagrant@127.0.0.1:/home/vagrant/devstack/local.conf .

大写 P 用于" port"。小写用于保留修改时间。

答案 2 :(得分:20)

使用

获取IdentityFile和端口
vagrant ssh-config

scp -i IdentityFile_file -P Port vagrant@127.0.0.1:/file_dir dist_dir例如

scp -i /Users/xxxxx/tmp/vagrant/centos_6.5/.vagrant/machines/default/virtualbox/private_key -P 2200  vagrant@127.0.0.1:/tmp/xxx .

答案 3 :(得分:5)

对于通过Google进入的任何人来说,这是一个方便的工具:Vagrant SCP

答案 4 :(得分:5)

正如@SevenJ所提到的,ssh-config可以提供您需要的所有信息。但是将它保存到文件并使用该文件要容易得多,而不是构建复杂的scp命令。 E.g:

{{1}}

我假设您的流浪文件没有覆盖"默认"中的机器名称。如果是,请替换"默认值:"与":"。

答案 5 :(得分:1)

与Dan链接的另一个选项:

   vagrant plugin install vagrant-scp
   vagrant scp [vm_name]:<remote_path> <local_path

,如果您需要相反的操作

 vagrant scp <local_path> [vm_name]:<remote_path> 

您可以使用vagrant status来获取虚拟机的名称

Current machine states:

default                   running (virtualbox)

在我的情况下,默认名称是VM的名称。

答案 6 :(得分:0)

可能不需要其他工具,如scp或cat。弗雷德里克·亨利(Frederick Henri)对此进行了报道here

基本上,cp [file] /var/www/[your vm]/.vagrant会将文件复制到项目根目录下的.vagrant文​​件夹中,您可以在其中查看和移动桌面操作系统中的文件。