Je voudrais reproduire la façon dont Vagrant se connecte à ma VM dans un script shell à l'aide de la ssh
commande, donc je crée un alias pour mon instance Vagrant.
Quelle est la syntaxe de commande pour utiliser la ssh
commande normale pour y accéder?
shell
command-line
ssh
vagrant
Kevin Burke
la source
la source
vagrant ssh-config
.Réponses:
J'ai dû réimplémenter "vagrant ssh" parce que son
-c
option ne transmettait pas correctement les arguments. C'est essentiellement ce qu'il fait (il y en a peut-être plus, mais cela fonctionne bien de cette façon)En one-liner (avec merci à kgadek):
Pour tenir compte du fait que vous avez plus d'un hôte vagabond, cela sélectionnera l'hôte souhaité, ainsi que les lignes vides de la configuration (en utilisant sed):
la source
ssh
à votre Vagrant depuis l'extérieur duVagrantfile
répertoire ("en utilisant lassh
commande régulière "), c'est ainsi que j'ai interprété la question.auto_correct: true
paramètre. Voici plus d'informations sur la façon de le changer manuellementHost
entrée. La commande modifiée est:ssh $(vagrant ssh-config | awk 'NR>1 {print " -o "$1"="$2}') localhost
Il y a déjà beaucoup de réponses, mais elles semblent toutes trop compliquées ou résolvent des problèmes que le demandeur n'avait pas.
simplement:
la source
vagrant-ssh
fichier.gitignore
.zsh
), le one-liner suivant fonctionne:ssh -F =(vagrant ssh-config) default
ssh
fichier de configuration:,vagrant ssh-config >> ~/.ssh/config
donc vous exécutez simplementssh default
de n'importe où dans votre système, oùdefault
est le nom de la VM que vous pouvez spécifier comme ici-F
n'est pas simple~/.ssh/config
manière suggérée par @adamczi, vous pouvez ensuite utiliser l'extension Visual Studio Code Remote - SSH pour ssh dans la machine virtuelle Vagrant, modifier les fichiers et effectuer le développement à distance. Simplement CMD-SHIFT-P puis "Remote-SSH: Connect to Host ..." et l'entrée ssh .config que vous venez d'ajouter est automatiquement répertoriée - il vous suffit de la sélectionner et voilà, vscode se connecte à votre vm vagrant distant! Sans l'approche d'entrée de configuration, je ne sais pas comment je l'aurais fait autrement avec vscode.En course terminale
Dans une autre fenêtre / onglet de terminal
Là, vous verrez la commande réelle exécutée par Vagrant, quelque chose comme ceci:
la source
Passez simplement le tout
vagrant ssh-config
en fichier de configurationssh
avec le-F configfile
paramètre. L'alias d'hôte auquel se connecter est défini sur la première ligne devagrant ssh-config
;Host default
signifie que vous pouvez vous connecter avecssh default
.Je ne pouvais pas voir une option pour lire le fichier de configuration à partir de l'entrée standard, alors je suis allé avec la route du fichier temporaire. Voici une ligne unique qui nettoie également le
$TMPDIR.vagrant-ssh-config
fichier temporaire par la suite. Il doit être exécuté dans le même répertoire que le vôtreVagrantfile
, en supposant que votre boîte vagabonde soit opérationnelle.Remarque: sur mon système Mac OSX, se
$TMPDIR
développe en/var/folders/46/yltlhtgx8m5cg68_w95wgvy41324gn/T/
(maintenant). Utilisez une autre variable , ou un autre dossier, s'il n'est pas défini sur votre système.la source
ssh -F <(vagrant ssh-config)
zsh: zsh process substitutionssh -F =(vagrant ssh-config)
ssh -F
bash - la façon dont vous mentionnez devrait cependant fonctionner dans zsh.J'ai résolu cela d'une manière très simple: lorsque vous démarrez la boîte vagrant, elle affiche l'adresse ssh comme celle-ci
alors vous pouvez vous connecter à la boîte en utilisant l'utilisateur vagrant, l'hôte et le port que vous obtenez
la source
vagrant
Si vous n'avez pas besoin d'utiliser stdin avec
ssh
(par exemple, vous voulez exécuter juste une commande et vous déconnecter), vous pouvez utiliser:Cette méthode a été suggérée en réponse à une question similaire sur les groupes Google .
Malheureusement , la substitution de processus bash ne fonctionne pas non plus (voir cette question sur unix.stackexchange pour plus de détails).
Les meilleures options que vous avez, si vous voulez un shell interactif, sont de créer un fichier temporaire et de l'utiliser avec
ssh -F
ou de l'utiliserawk
comme suggéré par les autres réponses.la source
Si vous voulez simplement le configurer pour pouvoir utiliser la ligne de commande ssh normale, ainsi que scp et autres, vous pouvez exécuter
vagrant ssh-config
et ajouter la sortie à votre configuration ssh par défaut. Si vous remplacez la ligne "Host default" par un nom d'hôte plus descriptif, vous devriez être prêt à partir.la source
Si vous voulez simplement que la commande minimale se connecte à votre box, vous devez connaître le port qu'il utilise (imprimé en faisant
vagrant up
, ou visible en faisantvagrant ssh-config
) et où se trouve votre clé SSH privée (également visible en faisant)vagrant ssh-config
)Ensuite, il suffit de fournir la clé et le port:
ssh -p 2222 -i $HOME/vagrantenv/.vagrant/machines/default/virtualbox/private_key [email protected]
la source
De nombreuses autres réponses supposent que Vagrant est installé.
J'ai Vagrant installé sur Windows 10, mais je ne peux pas
vagrant ssh
car j'utilise PuTTy comme client SSH, ce que vagrant n'acceptera pas.Cependant, dans Windows 10, nous avons également Bash sur Ubuntu sur Windows. Donc, je l'utilise simplement avec la commande suivante:
Il est assez facile d'installer Vagrant sur Win10-Ubuntu, mais il souhaite également que vous installiez Virtualbox pour une raison quelconque, ce que je préfère ne pas faire.
NB j'ai essayé avec la
ssh default -F vagrant-ssh-config
méthode, mais j'obtiens justeJe suppose que c'est parce que le
IdentityFile
chemin est un chemin Windows, alors que dans Bash, il devrait commencer par/mnt/c/
. Je suppose que vous pouvez simplement écrire le fichier et le modifier si cela fonctionne mieux pour vous.la source
Vous pouvez ajouter une configuration d'hôte vagabond à votre configuration ssh locale.
vagrant ssh-config >> ~ / .ssh / config
ssh vagrant @ {hôte}
ex. cat ~ / .ssh / config
la source
Il existe un moyen qui reproduit la façon dont un utilisateur distant peut se connecter au système
config.vm.network "private_network", ip: "192.168.33.10"
Cela ajoute une adresse IP privée pour l'hôte (faites-en ce que vous souhaitez dans la plage 192.168 tant qu'il n'est pas déjà utilisé
your_virtual_host_name.pem
Vous trouverez la clé sous .vagrant \ machines \ default \ virtualbox \ private_key
Allez dans votre répertoire personnel et faites votre ssh Unix habituel, alors
ssh -i your_virtual_hostname.pem [email protected]
où le nom d'utilisateur, peut bien être vagabond si vous avez une boîte standard, regardez la sortie de vagrant ssh-config pour les détails standard ssh pour la boîte.
C'est tout
la source
.vagrant
dossier appartiennent donc à root. Et les permissions sur le fichier étaient rw ------- donc seul root avait les permissions pour lire le fichier clé. Cela pourrait peut-être être utile à n'importe qui.Vagrant stocke la clé privée
~/.vagrant.d/insecure_private_key
et l'utilise pour se connecter à chaque machine viassh
, étant donné qu'elle est configurée pour se connecter sur le port 2200 (par défaut), ce serait quelque chose comme:ssh vagrant@localhost -p 2200 -i ~/.vagrant.d/insecure_private_key
Remarque: assurez-vous que la clé privée appartient à l'utilisateur exécutant
Vagrant
.Cependant, si votre objectif est d'avoir un environnement multi-machines, vous pouvez le faire en utilisant
config.vm.define
.Voici un exemple illustrant un environnement avec 2 machines, l'une appelée
web
et l'autredatabases
:Ensuite, vous aurez toutes les commandes Vagrant disponibles par machine, c'est
vagrant ssh web
-à- dire etvagrant provision databases
.la source
ssh vagrant@<host>
mot de passe:vagrant
Exemples:
ssh [email protected]
ou après vérification de l'IP (de l'intérieur, en utilisant
vagrant ssh
)ssh [email protected]
la source
Vous pouvez ajouter la configuration ssh pour votre hôte vagabond à la configuration ssh.
Obtenez la configuration ssh pour vagrant machine dans le dossier vagrant:
vagrant ssh-config
Ouvrez
{UserDir}/.ssh/config
et ajoutez le résultat de la commande précédente. Remarque : la première ligneHost default
signifie l'alias que vous utiliserez plus tard pour lassh
commande. Nommez-le comme votre machine ou dir. Si vous n'avez qu'un seul répertoire vagrant - vous pouvez le nommerHost vagrant
Chut à Vagrant:
ssh vagrant
. Le nom de famille est l'alias de l'étape précédente.la source
Vous pouvez prendre n'importe lequel des
ssh-config
arguments et les transmettre à ssh sur la ligne de commande en tant que-o Key=value
. Ainsi, pour une configuration vagabonde simple à un hôte (vous devrez peut-être faire un peu plus de travail avecgrep
ouperl
pour une configuration multi -hôte ), vous pouvez faire quelque chose comme ce qui suit (ou remplacerperl
parsed
si vous le souhaitez):la source
Mon Env. est Win7 + Centos. La réponse avec la plupart d'accord ne fonctionne pas pour moi. Après avoir échoué après avoir essayé
ssh -p [port] [usrname]@127.0.01
, j'utilise juste XShell pour ajouter une nouvelle session avec le port vagrant et le nom d'utilisateur.Ça marche.
Peut-être que Xshell est un candinate.
la source