Comment ssh à l'errance des sans réellement en cours d'exécution “vagrant ssh”?
Je voudrais reproduire la manière dont Les journaux de ma VM dans un script shell en utilisant ssh
commande, j'ai donc créer un alias pour mon Vagabond de l'instance.
Quelle est la syntaxe de la commande pour l'utilisation de l' ssh
de commande pour y avoir accès?
- Qu'est-ce que vous êtes en train de demander, je vois trois différentes choses étant posées, on peut élargir la question est alors de drapeau à migrer. Merci.
- Par défaut, le port ssh de VM qui est de -22 sera transmis à 2222 sur la machine hôte. Je putty-ed sur 127.0.0.1 et le port 2222 avec SSH et cela a fonctionné!
- Si vous utilisez plus d'une case, ce numéro de port sera modifié automatiquement. Vous pouvez obtenir le droit l'une par l'exécution de
vagrant ssh-config
.
Vous devez vous connecter pour publier un commentaire.
J'ai eu à re-mettre en œuvre "vagrant ssh" parce que c'est
-c
option ne passe pas sur les arguments correctement. C'est fondamentalement ce qu'il fait (il peut y en avoir plus, mais il fonctionne très bien de cette façon)Comme un one-liner (avec remerciements à kgadek):
Compte lorsque vous avez plus d'un vagabond de l'hôte, ce sera sélectionnez l'hôte, ainsi que l'abattage de lignes vides à partir de la config (à l'aide de sed):
ssh
à votre Errance de l'extérieur de laVagrantfile
répertoire ("à l'aide de l'ordinairessh
de commande"), qui est comment j'ai interprété la question.auto_correct: true
réglage. Voici plus d'infos sur la façon de modifier manuellementHost
entrée. La modification de la commande est:ssh $(vagrant ssh-config | awk 'NR>1 {print " -o "$1"="$2}') localhost
vagrant ssh
a un verrou global - un processus à la fois seulement.ssh
lui-même n'a pas un tel verrouillage, de sorte que l'utilisation de votre one-liner permettez-moi de contourner cette limitation.Il y a beaucoup de réponses déjà, mais ils ont tous l'air trop compliqué ou de résoudre des problèmes que le demandeur ne disposait pas.
simplement:
vagrant-ssh
fichier dans.gitignore
.zsh
), le one-liner suivant fonctionne:ssh -F =(vagrant ssh-config) default
ssh
fichier de config:vagrant ssh-config >> ~/.ssh/config
, de sorte que vous venez d'exécuterssh default
à partir de n'importe où dans votre système, oùdefault
est le nom de la machine virtuelle que vous pouvez spécifier comme ici-F
n'est pas simpleDans le terminal exécutez
Dans un autre terminal fenêtre/onglet exécuter
De là, vous verrez la réelle commande exécutée par Vagrant, quelque chose comme ceci:
Il suffit de passer l'ensemble de la
vagrant ssh-config
comme un fichier de config pourssh
avec le-F configfile
paramètre. Les alias d'hôte de connexion est défini sur la première ligne dansvagrant 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, s'en est allé avec le fichier temp route. Voici un one-liner qui nettoie également le temporaire
$TMPDIR.vagrant-ssh-config
fichier par la suite. Elle doit être exécutée dans le même répertoire que votreVagrantfile
, en supposant que vous vagrant box est en place et en cours d'exécution.Remarque: sur mon système Mac OS x,
$TMPDIR
étend à/var/folders/46/yltlhtgx8m5cg68_w95wgvy41324gn/T/
(pour le moment). Utilisation un autre variable, ou dans un autre dossier, s'il n'est pas installé sur votre système.ssh -F <(vagrant ssh-config)
zsh: zsh processus de substitutionssh -F =(vagrant ssh-config)
ssh -F
dans bash - la façon dont vous mentionner devraient travailler en zsh bien.J'ai résolu ce problème d'une manière très simple:
lorsque vous démarrez le vagrant box il montre le ssh adresse comme ceci
alors vous pouvez vous connecter à la boîte en utilisant le vagabond de l'utilisateur, l'hôte et le port que vous obtenez
vagrant
Si vous n'avez pas besoin d'utiliser l'entrée standard stdin avec
ssh
(par exemple vous voulez exécuter une commande et déconnexion), vous pouvez utiliser:Cette méthode a été proposé en réponse à une question similaire sur google groupes.
Malheureusement bash processus de substitution ne fonctionne pas non plus (voir à cette question sur unix.stackexchange pour plus de détails).
Meilleures options que vous avez, si vous voulez un shell interactif, à la création d'un fichier temporaire et de l'utiliser avec
ssh -F
ou de l'utilisationawk
comme suggéré par les autres réponses.Si vous voulez juste de le configurer de sorte que vous pouvez utilisation normale la normale ssh en ligne de commande, ainsi que de la scp et de ce fait, vous pouvez exécuter
vagrant ssh-config
et ajouter la sortie par défaut de votre configuration de ssh. Si vous remplacez la ligne "Host par défaut" avec un nom évocateur, vous devriez être bon d'aller.Si vous voulez juste le strict minimum de commande pour se connecter à votre box, vous devez connaître le numéro de port qu'il utilise (imprimé lorsque vous faites
vagrant up
, ou visible de fairevagrant ssh-config
) et où est votre clé SSH (également visible lorsque vous faitesvagrant ssh-config
)Alors c'est juste une question de la fourniture de la clé et port:
ssh -p 2222 -i $HOME/vagrantenv/.vagrant/machines/default/virtualbox/private_key [email protected]
Beaucoup d'autres réponses supposent que vous avez Vagrant installé.
J'ai Vagrant installé sur Windows 10, mais je ne peux pas
vagrant ssh
parce que je suis à l'aide de Mastic que mon client SSH, qui vagrant ne l'acceptera pas.Toutefois, dans Windows 10 nous avons également Bash sur Ubuntu que sur Windows. Alors, je viens de l'utiliser avec la commande suivante:
Il est assez facile à installer Vagrant sur Win10-Ubuntu mais il veut aussi vous installer Virtualbox pour une raison que je préfère ne pas le faire.
N. B. j'ai essayé avec le
ssh default -F vagrant-ssh-config
méthode, mais je viens d'obtenirJe suppose que c'est parce que le
IdentityFile
chemin est un chemin d'accès Windows, alors qu'en Bash, il doit commencer par/mnt/c/
. Je suppose que vous pouvez simplement écrire le fichier et de le modifier si cela fonctionne mieux pour vous.Vagrant magasins de la clé privée dans
~/.vagrant.d/insecure_private_key
et l'utilise pour se connecter à toutes les machines par le biais dessh
, considérant qu'il est configuré pour se connecter sur le port 2200 (par défaut), il serait quelque chose comme:ssh vagrant@localhost -p 2200 -i ~/.vagrant.d/insecure_private_key
Remarque: assurez-vous que la clé privée est la propriété de l'utilisateur qui exécute
Vagrant
.Mais si votre but est d'avoir un multi-environnement de la machine 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'autre estdatabases
:Vous pourrez avoir toutes Les commandes disponibles pour la machine, c'est à dire
vagrant ssh web
etvagrant provision databases
.Il y a une manière qui imite 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 de l'hôte (faire ce que vous voulez dans la 192.168 gamme, tant que ce n'est pas déjà utilisé
your_virtual_host_name.pem
Vous trouverez la clé sous .vagrant\machines\default\virtualbox\private_key
Accédez à votre répertoire et de faire de votre habitude Unix ssh, donc
ssh -i your_virtual_hostname.pem [email protected]
où nom d'utilisateur, peut être erratique si vous avez une boîte standard, chercher à la sortie de vagrant ssh-config ssh standard détails de la boîte.
Que c'est
.vagrant
dossier sont donc la propriété de root. Et les autorisations sur le fichier rw------- donc, seul root a les autorisations pour lire le fichier de clé. Peut-être que cela pourrait être utile à tout le monde.ssh vagrant@<host>
mot de passe:vagrant
Exemples:
ssh [email protected]
ou après vérification de l'adresse IP (adresse de l'intérieur, à l'aide de
vagrant ssh
)ssh [email protected]
Vous pouvez prendre un des
ssh-config
arguments, et de les transmettre à ssh en ligne de commande comme-o Key=value
. Ainsi, par un simple hôte vagrant d'installation (vous pourriez avoir à faire un peu plus de travail avecgrep
ouperl
pour un multihost setup), vous pouvez faire quelque chose comme ce qui suit (ou remplacerperl
avecsed
si vous le souhaitez):Mon Env. est Win7 + Centos. La réponse à la plupart accord ne fonctionne pas pour moi. Après avoir échoué après avoir essayé
ssh -p [port] [usrname]@127.0.01
, je viens d'utiliser XShell pour ajouter une nouvelle session avec le vagabond de port et le nom d'utilisateur.Il fonctionne.
Peut-être Xshell est un candinate.
Vous pouvez ajouter ssh config pour votre vagrant hôte ssh config.
Obtenir ssh config pour vagrant machine dans vagrant dossier:
vagrant ssh-config
Ouvrir
{UserDir}/.ssh/config
et ajoutez y le résultat de la commande précédente. Note: la première ligneHost default
moyenne de l'alias que vous utiliserez plus tard pourssh
de commande. Nommez-le comme votre vagabond de la machine ou de la dir. Si vous n'avez qu'un vagabond dir - vous pouvez lui donner un nomHost vagrant
Ssh à l'errance:
ssh vagrant
. Le dernier nom est un alias de l'étape précédente.