web-dev-qa-db-fra.com

Comment copier un fichier d'une machine Vagrant vers un hôte local

Je veux copier un fichier local d'une machine Vagrant sur mon hôte local, mais je reçois un message d'erreur:

ssh: connexion au port 22 de l'hôte 127.0.0.1: connexion refusée

[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

J'ai également essayé d'utiliser localhost mais j'ai toujours la même erreur.

30
geeks

Vous devriez lire la page de manuel de scp. La syntaxe correcte est:

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

Les majuscules P est pour "port". Les minuscules sont utilisées pour conserver les temps de modification.

25
Jakuje

Une autre option est cat les fichiers vers quelque chose de local:

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

Cela devrait également fonctionner pour les fichiers qui nécessitent des autorisations root (ce que le plugin SCP vagabond ne semble pas prendre en charge).

44
Jace Browning

Obtenez IdentityFile et Port en utilisant

vagrant ssh-config

scp -i IdentityFile_file -P Port [email protected]:/file_dir dist_dir par exemple.

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

Comme l'a mentionné @SevenJ, ssh-config peut fournir toutes les informations dont vous avez besoin. Mais il est beaucoup plus facile de l'enregistrer dans un fichier et d'utiliser ce fichier, plutôt que de construire une commande scp compliquée. Par exemple.:

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

Ici, je suppose que votre fichier vagabond ne remplace pas le nom de la machine par "défaut". Si c'est le cas, remplacez "default:" par ":".

5
Andy Lowry

Ceci est un outil pratique pour toute personne entrant via Google: Vagrant SCP

5
Dan