Me gustaría reproducir la forma en que Vagrant se registra en mi VM dentro de un script de shell utilizando el ssh
comando, por lo que creo un alias para mi instancia de Vagrant.
¿Cuál es la sintaxis del comando para usar el ssh
comando regular para acceder?
shell
command-line
ssh
vagrant
Kevin Burke
fuente
fuente
vagrant ssh-config
.Respuestas:
He tenido que volver a implementar "ssh vagabundo" porque su
-c
opción no pasó los argumentos correctamente. Esto es básicamente lo que hace (puede haber más, pero funciona bien de esta manera)Como una frase (con agradecimiento a kgadek):
Para tener en cuenta cuando tiene más de un host vagabundo, esto seleccionará el host deseado, así como también eliminará las líneas en blanco de la configuración (usando sed):
fuente
ssh
a tu Vagrant desde fuera delVagrantfile
directorio ("usando elssh
comando regular "), que es cómo interpreté la pregunta.auto_correct: true
configuración. Aquí hay más información sobre cómo cambiarlo manualmenteHost
entrada. El comando modificado es:ssh $(vagrant ssh-config | awk 'NR>1 {print " -o "$1"="$2}') localhost
Ya hay muchas respuestas, pero todas parecen demasiado complicadas o resuelven problemas que el autor de la pregunta no tenía.
simplemente:
fuente
vagrant-ssh
archivo.gitignore
.zsh
), las siguientes obras de una sola línea:ssh -F =(vagrant ssh-config) default
ssh
fichero de configuración:vagrant ssh-config >> ~/.ssh/config
, por lo que acaba de ejecutarssh default
desde cualquier lugar en el sistema, dondedefault
es el nombre de la máquina virtual que se puede especificar como aquí-F
no es sencillo~/.ssh/config
en la forma en que @adamczi sugiere, puede usar la extensión SSH de Visual Studio Code Remote para ssh en Vagrant VM y editar archivos y hacer desarrollo remoto. Simplemente CMD-SHIFT-P, luego "Remote-SSH: Connect to Host ..." y la entrada ssh .config que acaba de agregar aparece automáticamente en la lista: simplemente selecciónela y listo, vscode se conecta a su vm remoto vagabundo. Sin el enfoque de entrada de configuración, no estoy seguro de qué otra forma lo habría hecho con vscode.En ejecución de terminal
En otra ventana de terminal / pestaña ejecutar
Allí verá el comando real ejecutado por Vagrant, algo como esto:
fuente
Simplemente pase todo
vagrant ssh-config
como un archivo de configuraciónssh
con el-F configfile
parámetro. El alias de host para conectarse se define en la primera líneavagrant ssh-config
;Host default
significa que te puedes conectarssh default
.No pude ver una opción para leer el archivo de configuración desde la entrada estándar, así que elegí la ruta del archivo temporal. Aquí hay una línea que también limpia el
$TMPDIR.vagrant-ssh-config
archivo temporal después. Debe ejecutarse en el mismo directorio que el suyoVagrantfile
, suponiendo que su casilla vagabunda esté en funcionamiento.Nota: en mi sistema Mac OSX, se
$TMPDIR
expande a/var/folders/46/yltlhtgx8m5cg68_w95wgvy41324gn/T/
(en este momento). Use otra variable , u otra carpeta, si no está configurada en su sistema.fuente
ssh -F <(vagrant ssh-config)
zsh: sustitución del proceso zshssh -F =(vagrant ssh-config)
ssh -F
en bash, aunque la forma en que mencionas debería funcionar en zsh.Resolví esto de una manera muy simple: cuando inicias el cuadro vagabundo, muestra la dirección ssh como esta
entonces puede conectarse a la caja utilizando el usuario vagabundo, el host y el puerto que obtiene
fuente
vagrant
Si no necesita usar stdin con
ssh
(por ejemplo, desea ejecutar solo un comando y cerrar sesión), puede usar:Este método fue sugerido en respuesta a una pregunta similar en grupos de google .
Lamentablemente , la sustitución del proceso bash tampoco funciona (consulte esta pregunta en unix.stackexchange para obtener más detalles).
Las mejores opciones que tiene, si desea un shell interactivo, son crear un archivo temporal y usarlo con
ssh -F
o usarawk
como lo sugieren las otras respuestas.fuente
Si solo desea configurarlo para que pueda usar la línea de comando ssh normal, así como scp y demás, puede ejecutar
vagrant ssh-config
y agregar la salida a su configuración ssh predeterminada. Si reemplaza la línea "Host default" con un nombre de host más descriptivo, debería estar listo.fuente
Si solo desea que el comando mínimo se conecte a su caja, debe conocer el puerto que está usando (impreso cuando lo hace
vagrant up
o visiblevagrant ssh-config
) y dónde está su clave SSH privada (también visible cuando lo hacevagrant ssh-config
)Entonces es solo cuestión de proporcionar la clave y el puerto:
ssh -p 2222 -i $HOME/vagrantenv/.vagrant/machines/default/virtualbox/private_key [email protected]
fuente
Muchas de las otras respuestas suponen que tienes instalado Vagrant.
Tengo Vagrant instalado en Windows 10, pero no puedo
vagrant ssh
porque estoy usando PuTTy como mi cliente SSH, que vagabundo no aceptará.Sin embargo, en Windows 10 también tenemos Bash en Ubuntu en Windows. Entonces, solo lo uso con el siguiente comando:
Es bastante fácil instalar Vagrant en Win10-Ubuntu, pero también quiere que instales Virtualbox por alguna razón, lo que prefiero no hacer.
Nota: he intentado con el
ssh default -F vagrant-ssh-config
método, pero acabo de obtenerSupongo que esto se debe a que la
IdentityFile
ruta es una ruta de Windows, mientras que en Bash, debería comenzar con/mnt/c/
. Supongo que podría escribir el archivo y luego modificarlo si eso funciona mejor para usted.fuente
Puede agregar una configuración de host vagabundo a su configuración ssh local.
ssh-config vagabundo >> ~ / .ssh / config
ssh vagabundo @ {host}
ex. cat ~ / .ssh / config
fuente
Hay una manera que replica cómo un usuario remoto puede iniciar sesión en el sistema
config.vm.network "private_network", ip: "192.168.33.10"
Esto agrega una IP privada para el host (haga que sea lo que desea en el rango 192.168 siempre y cuando no esté ya en uso
your_virtual_host_name.pem
Encontrará la clave en .vagrant \ machines \ default \ virtualbox \ private_key
Vaya a su directorio de inicio y haga su ssh Unix habitual, así que
ssh -i your_virtual_hostname.pem [email protected]
donde nombre de usuario, puede ser vagabundo si tiene un cuadro estándar, mire la salida de ssh-config vagabundo para obtener detalles estándar de ssh para el cuadro.
Eso es
fuente
.vagrant
carpeta son propiedad de root. Y los permisos en el archivo eran rw ------- por lo que solo root tenía permisos para leer el archivo clave. Quizás esto pueda ser útil para cualquiera.Vagrant almacena la clave privada
~/.vagrant.d/insecure_private_key
y la usa para conectarse a cada máquinassh
, considerando que está configurada para conectarse en el puerto 2200 (predeterminado) sería algo así como:ssh vagrant@localhost -p 2200 -i ~/.vagrant.d/insecure_private_key
Nota: asegúrese de que la clave privada sea propiedad del usuario en ejecución
Vagrant
.Sin embargo, si su objetivo es tener un entorno de máquinas múltiples, puede hacerlo utilizando
config.vm.define
.Aquí hay un ejemplo que ilustra un entorno con 2 máquinas, una llamada
web
y la otra esdatabases
:Entonces tendrá todos los comandos Vagrant disponibles por máquina, es decir,
vagrant ssh web
yvagrant provision databases
.fuente
ssh vagrant@<host>
contraseña:vagrant
Ejemplos:
ssh [email protected]
o después de verificar la IP (desde adentro, usando
vagrant ssh
)ssh [email protected]
fuente
Puede agregar ssh config para su host vagabundo a ssh config.
Obtenga ssh config para vagrant machine en vagrant folder:
vagrant ssh-config
Abra
{UserDir}/.ssh/config
y agregue el resultado del comando anterior. Nota : la primera líneaHost default
significa el alias que usará más adelante para elssh
comando. Nómbrelo como su máquina o directorio vagabundo. Si solo tiene un directorio vagabundo, puede nombrarloHost vagrant
Ssh a vagabundo:
ssh vagrant
. El apellido es un alias del paso anterior.fuente
Puede tomar cualquiera de los
ssh-config
argumentos y pasarlos a ssh en la línea de comandos como-o Key=value
. Por lo tanto, para una configuración vagabunda simple de un host (es posible que tenga que trabajar un poco más congrep
operl
para una configuración de host múltiple), puede hacer algo como lo siguiente (o reemplazarperl
consed
si lo desea):fuente
Mi env. es Win7 + Centos. La respuesta con la mayoría de los acuerdos no me funciona. Después de fallar después de intentarlo
ssh -p [port] [usrname]@127.0.01
, solo uso XShell para agregar una nueva sesión con el puerto vagabundo y el nombre de usuario.Funciona.
Quizás Xshell es un candidato.
fuente