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

gee*_*eks 30 linux scp vagrant

我想将一个本地文件从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
Run Code Online (Sandbox Code Playgroud)

我也试过使用localhost但仍然有同样的错误.

Jac*_*ing 46

另一种选择是cat本地文件:

vagrant ssh -c "sudo cat /home/vagrant/devstack/local.conf" > local.conf
Run Code Online (Sandbox Code Playgroud)

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


Jak*_*uje 25

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

scp -P 2222 vagrant@127.0.0.1:/home/vagrant/devstack/local.conf .
Run Code Online (Sandbox Code Playgroud)

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

  • 将文件复制到流浪机器: scp -i .vagrant/machines/your_machine_name/virtualbox/private_key -P 2222 /path/file vagrant@127.0.0.1: (2认同)

小智 20

使用获取IdentityFile和Port

vagrant ssh-config
Run Code Online (Sandbox Code Playgroud)

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 .
Run Code Online (Sandbox Code Playgroud)


Dyl*_*lan 9

另一个选项如 Dan 链接到:

   vagrant plugin install vagrant-scp
   vagrant scp [vm_name]:<remote_path> <local_path
Run Code Online (Sandbox Code Playgroud)

如果你需要做相反的事情

 vagrant scp <local_path> [vm_name]:<remote_path> 
Run Code Online (Sandbox Code Playgroud)

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

Current machine states:

default                   running (virtualbox)
Run Code Online (Sandbox Code Playgroud)

在我的例子中,默认值是虚拟机的名称。


Dan*_*Dan 5

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


And*_*wry 5

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

vagrant ssh-config > config.txt
scp -F config.txt default:/path/to/file .
Run Code Online (Sandbox Code Playgroud)

在这里,我假设您的流浪者文件没有​​覆盖“默认”中的计算机名称。如果是这样,请将“ default:”替换为“:”。