update password commands shell command-line ssh vagrant

shell - commands - vagrant ssh password



Cómo ssh a vagabundo sin ejecutar realmente "vagabundo ssh"? (15)

En la ejecución de la terminal

vagrant ssh

En otra ventana de terminal / pestaña ejecutar

ps aux | grep ssh

Allí verá el comando real ejecutado por Vagrant, algo como esto:

ssh [email protected] -p 2222 -o Compression=yes -o DSAAuthentication=yes -o LogLevel=FATAL -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -i ~/.vagrant.d/less_insecure_private_key -o ForwardAgent=yes

Me gustaría reproducir la forma en que Vagrant se conecta a mi VM dentro de un script de shell usando el comando ssh , así que creo un alias para mi instancia de Vagrant.

¿Cuál es la sintaxis del comando para usar el comando regular ssh para acceder a él?


Hay una manera de replicar cómo un usuario remoto podría iniciar sesión en el sistema

  1. Edite el archivo Vagrant para su instancia agregando

config.vm.network "private_network", ip: "192.168.33.10"

Esto agrega una IP privada para el host (haga que sea lo que desee en el rango 192.168 siempre que no se haya utilizado ya

  1. Reinicia la instancia con recarga vagabunda desde la línea de comando
  2. Copie el archivo vagabundo_key privado a algún equivalente de Linux que debería tener ejecutado en su caja (por ejemplo, Cygwin si en windows, uso Windows 10) a su directorio de inicio de cygwin, renomándolo en el camino a algo que describa el host. por ejemplo,

your_virtual_host_name.pem

  1. Encontrará la clave debajo de .vagrant / machines / default / virtualbox / private_key

  2. Vaya a su directorio de inicio y haga su ssh habitual de Unix, por lo que

ssh -i your_virtual_hostname.pem [email protected]

donde el nombre de usuario, bien puede ser vago si tienes una caja estándar, mira la salida de ssh-config vagabundo para los detalles estándar de ssh para la caja.

Eso es


Lo resolví de una manera muy simple: cuando inicias el cuadro vagabundo, muestra la dirección ssh como esta

SSH address: 127.0.0.1:2222

entonces puedes conectarte a la caja usando el usuario vago, el host y el puerto que obtienes

ssh [email protected] -p 2222


Mi Env. es Win7 + Centos. La respuesta con más acuerdo no funciona para mí. Después de fallar después de probar ssh -p [port] [usrname]@127.0.01 , solo uso XShell para agregar una nueva sesión con el puerto vago y el nombre de usuario.

Funciona.

Quizás Xshell es un candinado.


Muchas de las otras respuestas asumen que tiene instalado Vagrant.

Tengo Vagrant instalado en Windows 10, pero no puedo vagrant ssh porque estoy usando PuTTy como mi cliente SSH, que el vagabundo no aceptará.

El ejecutable ssh encuentra en el PATH es un cliente SSH de PuTTY Link. Vagrant solo es compatible con los clientes OpenSSH SSH.

Sin embargo, en Windows 10 también tenemos Bash en Ubuntu en Windows. Entonces, solo uso eso con el siguiente comando:

ssh [email protected] -p2222 -i .vagrant/machines/default/virtualbox/private_key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=Fatal

Es bastante fácil instalar Vagrant en Win10-Ubuntu pero también quiere que instale Virtualbox por alguna razón, lo cual prefiero no hacer.

NB He intentado con el método ssh default -F vagrant-ssh-config , pero acabo de recibir

Permiso denegado (clave pública, contraseña).

Supongo que esto se debe a que la ruta de IdentityFile es una ruta de Windows, mientras que en Bash, debe comenzar con /mnt/c/ . Supongo que podrías escribir el archivo y luego modificarlo si eso funciona mejor para ti.


Puede agregar ssh config para su host vagabundo a ssh config.

  1. Obtenga ssh config para la máquina vagabunda en la carpeta vagrant ssh-config : vagrant ssh-config

  2. Abra {UserDir}/.ssh/config y anexe el resultado del comando anterior. Nota : el Host default la primera línea es el alias que usará más adelante para el comando ssh . Nómbrelo como su máquina vagabunda o dir. Si tienes solo un dir vago, puedes ponerle el nombre Host vagrant

  3. Ssh a vagabundo: ssh vagrant El apellido es alias del paso anterior.


Puede tomar cualquiera de los argumentos de ssh-config y pasarlos a ssh en la línea de comando como -o Key=value . Por lo tanto, para una configuración de vagabundo simple de un solo host (puede que tenga que trabajar un poco más con grep o perl para una configuración de múltiples hosts), puede hacer algo como lo siguiente (o reemplazar perl con sed si lo desea):

ssh `vagrant ssh-config | tail -8 | perl -pe ''s/^/s+/-o@/; s//s//=/;s/@/ /;s//n/ /''` vagrant@localhost


Si solo desea configurarlo para que pueda usar normal la línea de comandos ssh normal, así como también scp y similares, puede ejecutar vagrant ssh-config y anexar 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 para continuar.

vagrant ssh-config |sed -e "s/Host default/Host my_cool_dev_box/" >> ~/.ssh/config ssh my_cool_dev_box


Si solo desea que el comando mínimo para conectarse a su caja, necesita saber el puerto que está utilizando (impreso al hacer vagrant up , o visible haciendo vagrant ssh-config ) y dónde está su clave SSH privada (también visible cuando hace vagrant ssh-config )

Entonces solo se trata de proporcionar la clave y el puerto:

ssh -p 2222 -i $HOME/vagrantenv/.vagrant/machines/default/virtualbox/private_key [email protected]


Simplemente pase todo el vagrant ssh-config como un archivo de configuración a ssh con el parámetro -F configfile . El alias de host para conectarse se define en la primera línea en vagrant ssh-config ; Host default significa que puedes conectarte con ssh default .

No pude ver una opción para leer el archivo de configuración de la entrada estándar, así que fui con la ruta del archivo temporal. Aquí hay una línea que también limpia el $TMPDIR.vagrant-ssh-config temporal después. Debe ejecutarse en el mismo directorio que su Vagrantfile , suponiendo que su caja vagabunda esté en funcionamiento.

vagrant ssh-config > $TMPDIR.vagrant-ssh-config && ssh default -F $TMPDIR.vagrant-ssh-config ; rm $TMPDIR.vagrant-ssh-config

Nota: en mi sistema Mac OSX, $TMPDIR expande a /var/folders/46/yltlhtgx8m5cg68_w95wgvy41324gn/T/ (en este momento). Use another variable , u otra carpeta, si no está configurada en su sistema.


Tuve que volver a implementar "vagabundo ssh" porque su opción -c no transmitió los argumentos correctamente. Esto es básicamente lo que hace (puede haber más, pero funciona bien de esta manera)

#!/bin/sh PORT=$(vagrant ssh-config | grep Port | grep -o ''[0-9]/+'') ssh -q / -o UserKnownHostsFile=/dev/null / -o StrictHostKeyChecking=no / -i ~/.vagrant.d/insecure_private_key / vagrant@localhost / -p $PORT / "$@"

Como un trazador de líneas (con gracias a kgadek):

ssh $(vagrant ssh-config | awk ''NR>1 {print " -o "$1"="$2}'') localhost

Para tener en cuenta cuando tienes más de un host vagabundo, este seleccionará el host deseado, así como eliminar las líneas en blanco de la configuración (usando sed):

HOST=name-of-my-host ssh $(vagrant ssh-config $HOST | sed ''/^[[:space:]]*$/d'' | awk ''NR>1 {print " -o "$1"="$2}'') localhost


Ya hay muchas respuestas, pero todas parecen demasiado complicadas o resuelven problemas que el solicitante no tenía.

simplemente:

# save the config to a file vagrant ssh-config > vagrant-ssh # run ssh with the file. ssh -F vagrant-ssh default



Si no necesita usar stdin con ssh (por ejemplo, desea ejecutar solo un comando y cerrar la sesión), puede usar:

vagrant ssh-config --host default | ssh -F /dev/stdin default

Este método fue sugerido en respuesta a una pregunta similar sobre grupos de google .

Lamentablemente , la sustitución del proceso bash tampoco funciona (consulte esta pregunta en unix.stackexchange para obtener más información).

Las mejores opciones que tiene, si desea un shell interactivo, son crear un archivo temporal y usarlo con ssh -F o usar awk como lo sugieren las demás respuestas.


Vagrant almacena la clave privada en ~/.vagrant.d/insecure_private_key y la usa para conectarse a cada máquina a través de ssh , teniendo en cuenta que está configurada para conectarse en el puerto 2200 (por defecto) 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 que ejecuta Vagrant .

Aunque 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 son databases :

config.vm.define ''web'', primary: true do |web| web.vm.box = ''CentOS64'' web.vm.hostname = ''vic-develop'' web.vm.network ''private_network'', ip: ''192.168.50.10'', virtualbox__intnet: true web.vm.synced_folder ''../code'', ''/var/www/project'', :mount_options => ["dmode=777,fmode=777"] web.vm.provision ''ansible'' do |ansible| ansible.playbook = ''development-web.yml'' ansible.sudo = true end end config.vm.define ''databases'' do |db| db.vm.box = ''CentOS64'' db.vm.network ''private_network'', ip: ''192.168.50.20'', virtualbox__intnet: true db.vm.network :forwarded_port, guest: 3306, host: 8206 db.vm.provision ''ansible'' do |ansible| ansible.playbook = ''development-db.yml'' ansible.sudo = true end end

Luego tendrá todos los comandos de Vagrant disponibles por máquina, es decir, vagrant ssh web y vagrant provision databases .