web-dev-qa-db-fra.com

mot de passe de tissu

Chaque fois que la matrice s'exécute, elle demande le mot de passe root. Peut-il être envoyé de la même manière pour les propositions automatisées.

fab staging test
35
bocca

fab -h va vous montrer toutes les options, vous pouvez aussi les lire ici .

En particulier, et je cite,

-p MOT DE PASSE, --password = MOT DE PASSE

Définit env.password sur la chaîne donnée; il sera alors utilisé par défaut mot de passe pour établir des connexions SSH ou en appelant le programme Sudo.

47
Alex Martelli

Je sais que vous avez posé une question sur le mot de passe, mais ne vaudrait-il pas mieux configurer le système de manière à ce que vous puissiez créer la structure (SSH) sans mot de passe?

Pour cela, sur la machine locale, faites:

  1. ssh-keygen et d'accord avec toutes les valeurs par défaut (si vous n'avez aucune raison, faites le contraire)
  2. cat ~/.ssh/id_rsa.pub et copier cette clé

Sur la machine distante:

  1. mkdir ~/.ssh && chmod 700 ~/.ssh
  2. touch ~/.ssh/authorized_keys2 && chmod 600 ~/.ssh/authorized_keys2
  3. Coller la clé copiée dans authorized_keys2

A partir de maintenant, votre machine distante "fait confiance" à votre machine locale et permet de la connecter sans mot de passe. Pratique.

56
nkrkv

Vous pouvez également définir des mots de passe par hôte ..__ Ce n’était pas évident pour moi, alors voici ce qui convient à tous ceux qui recherchent ceci:

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

Les caches Fabric utilisent les mots de passe utilisés dans le dictionnaire env.passwords . Il définit ce cache en utilisant la chaîne d'hôtes complets comme clé de ce dictionnaire et le mot de passe comme valeur . Si vous définissez vous-même ce dictionnaire avant d'exécuter une tâche, Fabric ne les demandera pas du tout.

50
stunsch

Pour ajouter à ceux qui se retrouvent ici à la suite d'une recherche, vous pouvez spécifier l'option -I lors de l'exécution de fab pour qu'elle vous invite à spécifier un mot de passe par défaut. De cette façon, il ne sera pas visible dans l'historique de vos commandes

exemple:

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

Une façon de le faire sans mettre le mot de passe dans la liste des processus (les commandes sont affichées dans ps aux) consiste à le mettre dans fabfile.py comme suit:

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

Mettez cela avant tout ce qui va au système distant et il ne demandera plus de mot de passe.

6
fahhem

Il est également possible de définir le mot de passe ssh dans connect_args

    conn = Connection(
    "{username}@{ip}:{port}".format(
        username=username,
        ip=ip,
        port=port,
    ),
    connect_kwargs={"password": password},
)
1
mirhossein

Il est possible de stocker le mot de passe de manière sécurisée dans le service de clés du système d’exploitation avec le module keyring . Le mot de passe peut ensuite être automatiquement récupéré et utilisé dans fabfile.py.

Vous devez d’abord stocker le mot de passe dans le trousseau, par exemple à l’aide du shell Python:

>>> import keyring
>>> keyring.set_password('some-Host', 'some-user', 'passwd')

Ensuite, vous pouvez l’utiliser dans fabfile.py, par exemple avec Fabric 2:

from fabric import task
import keyring

@task
def restart_Apache(connection):
    connection.config.Sudo.password = keyring.get_password(connection.Host, 'some-user')
    connection.Sudo('service Apache2 restart')
0
mrts