2010-02-26 24 views
33

Cada vez que la tela se ejecuta, solicita la contraseña de root, puede enviarse junto con la misma para propuestas automáticas.contraseña de la tela

fab staging test 
+0

yo consideraría muy cuidadosamente antes de adoptar cualquier ** ** estrategia que implicaba el almacenamiento de contraseñas en texto plano - como el medio ambiente vars, guarda en scripts, incluso ingresados ​​en la línea de comando, tanto como odio contradecir una luminaria como AM (Realmente, amigo, me has dado ** gran cantidad de información a lo largo de los años): vive en tu historial de comandos y presenta un riesgo de seguridad. – gomad

Respuesta

47

fab -h le mostrará todas las opciones, también puede leerlos here.

En particular, y cito,

-p, --password = contraseña

Conjuntos env.password a la cadena dada; se usará como contraseña predeterminada al hacer conexiones SSH o llamando al programa sudo.

52

Sé que ha preguntado acerca de la contraseña, pero ¿no sería mejor configurar el sistema para que pueda hacer fabric (es decir, SSH) sin contraseña?

Para ello, en la máquina local hacer:

  1. ssh-keygen y estoy de acuerdo con todos los valores por defecto (si no tiene razones hacen de otra manera)
  2. cat ~/.ssh/id_rsa.pub y copiar esa clave

en la máquina remota :

  1. mkdir ~/.ssh && chmod 700 ~/.ssh
  2. touch ~/.ssh/authorized_keys2 && chmod 600 ~/.ssh/authorized_keys2
  3. Pega llave copiada en authorized_keys2

A partir de ahora su máquina remota “confía” en su máquina local y permite el registro en sin contraseña. Práctico.

+2

Tuve que ejecutar 'chmod 700 ~/.ssh' para que funcione –

+6

uso ssh-copy-id puede ser más rápido: ' 'ssh-copy-id'' Uso:/usr/bin/ssh-copy -id [-i [identity_file]] [user @] machine – HVNSweeting

+0

+1 para ssh-copy-id. ¡Ordenado! – dennis

6

Una forma de hacer esto sin poner la contraseña en la lista de procesos (comandos aparecen en ps aux) es ponerlo en el fabfile.py así:

from fabric.context_managers import env 
env.password = 'PASSWORD' 

Deja que antes de cualquier cosa que vaya al sistema remoto y ya no pedirá una contraseña.

+0

Solo una nota, esto genera un error en el último Fabric 1.5.3 y Paramiko 1.9.0. –

+0

Simplemente elimine 'from fabric import env' – Crazenezz

+1

Nuevo paquete es context_managers,' from fabric.context_managers import env' –

47

También puede establecer contraseñas por host. No era obvio para mí, así que aquí va para cualquiera que busque esto:

from fabric import env 
env.hosts = ['[email protected]:port1', '[email protected]'] 
env.passwords = {'[email protected]:port1': 'password1', '[email protected]': 'password2'} 

cachés tejido utilizado contraseñas en el diccionario env.passwords. Establece este caché utilizando la cadena de hosts completa como clave de ese diccionario y la contraseña como valor. Si configura este diccionario usted mismo antes de ejecutar cualquier tarea, Fabric no los solicitará en absoluto.

+0

gracias por esta respuesta – qre0ct

8

Para agregar a cualquiera que termine aquí de una búsqueda, puede especificar la opción -I al ejecutar fab para que le solicite una contraseña predeterminada para usar.De esta manera no será visible en su historial de comandos

ejemplo:

$ fab -I my_task 
Initial value for env.password: