linux 如何将文件从Vagrant机器复制到localhost

t3irkdon  于 9个月前  发布在  Linux
关注(0)|答案(8)|浏览(126)

我想将本地文件从Vagrant机器复制到我的localhost,但收到错误消息:
ssh:connect to host 127.0.0.1 port 22:Connection refused.

[user@localhost ceil]$ scp -p 2222 [email protected]:/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,但仍然得到同样的错误。

goucqfw6

goucqfw61#

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

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

字符串
这也适用于需要root权限的文件(vagrant SCP插件似乎不支持)。

4ioopgfo

4ioopgfo2#

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

scp -P 2222 [email protected]:/home/vagrant/devstack/local.conf .

字符串
CROP代表“port”。小写用于保留修改时间。

eoigrqb6

eoigrqb63#

使用以下命令获取IdentityFile和Port

vagrant ssh-config

字符串
scp -i IdentityFile_file -P Port [[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection) :/file_dir dist_dir例如

scp -i /Users/xxxxx/tmp/vagrant/centos_6.5/.vagrant/machines/default/virtualbox/private_key -P 2200  [email protected]:/tmp/xxx .

cnjp1d6j

cnjp1d6j4#

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

vagrant ssh-config > config.txt
scp -F config.txt default:/path/to/file .

字符串
这里我假设你的vagrant文件没有覆盖“default”中的机器名,如果覆盖了,用“:“替换“default:“。

pobjuy32

pobjuy325#

另一个像丹这样的选项链接到:

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

字符串
如果你需要做相反的事情,

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


您可以使用vagrant status获取VM的名称

Current machine states:

default                   running (virtualbox)


在我的例子中,default是VM的名称。

2fjabf4q

2fjabf4q6#

这是一个方便的工具,任何人都可以通过谷歌:Vagrant SCP

nzk0hqpo

nzk0hqpo7#

像scp或cat这样的附加工具可能不需要。Frederick Henri介绍了它here
基本上,cp [file] /var/www/[your vm]/.vagrant会将文件复制到项目根目录下的.vagrant文件夹中,您可以在桌面操作系统中查看和移动该文件。

mcdcgff0

mcdcgff08#

一行:

scp -F =(cd $DIR_WITH_VAGRANTFILE && vagrant ssh-config) default:~/REMOTE_FILE .

字符串
它使用进程替换从vagrant ssh-config创建一个临时文件,并将其与-F ssh/scp选项一起使用。

相关问题