фабричный пароль - PullRequest
       18

фабричный пароль

35 голосов
/ 26 февраля 2010

Каждый раз, когда работает матрица, она запрашивает пароль root, может ли она быть отправлена ​​вместе с ней для автоматических предложений.

fab staging test

Ответы [ 7 ]

56 голосов
/ 26 февраля 2010

Я знаю, что вы спрашивали о пароле, но не лучше ли настроить систему так, чтобы вы могли использовать матрицу (например, SSH) без пароля?

Для этого на локальной машине выполните:

  1. ssh-keygen и согласен со всеми значениями по умолчанию (если у вас нет причин, поступите иначе)
  2. cat ~/.ssh/id_rsa.pub и скопируйте этот ключ

На удаленной машине:

  1. mkdir ~/.ssh && chmod 700 ~/.ssh
  2. touch ~/.ssh/authorized_keys2 && chmod 600 ~/.ssh/authorized_keys2
  3. Вставьте скопированный ключ в authorized_keys2

С этого момента ваша удаленная машина «доверяет» вашей локальной машине и позволяет войти в нее без пароля. Handy.

50 голосов
/ 06 апреля 2011

Вы также можете установить пароли для каждого хоста. Для меня это было неочевидно, так что здесь все, кто ищет это:

from fabric import env
env.hosts = ['user1@host1:port1', 'user2@host2.port2']
env.passwords = {'user1@host1:port1': 'password1', 'user2@host2.port2': 'password2'}

Кэши Fabric используют пароли в словаре env.passwords. Он устанавливает этот кэш, используя полную строку hosts в качестве ключа этого словаря и пароль в качестве значения. Если вы установите этот словарь самостоятельно, прежде чем выполнять какую-либо задачу, Fabric не будет запрашивать их вообще.

47 голосов
/ 26 февраля 2010

fab -h покажет вам все варианты, вы также можете прочитать их здесь .

В частности, и я цитирую,

-p ПАРОЛЬ, --password = ПАРОЛЬ

Устанавливает env.password для данной строки; затем он будет использоваться по умолчанию пароль при подключении по SSH или вызов программы sudo.

8 голосов
/ 16 октября 2013

Просто чтобы добавить всех, кто попал сюда из поиска, вы можете указать опцию -I при запуске fab, чтобы он запрашивал пароль по умолчанию для использования. Таким образом, он не будет виден в истории ваших команд

пример:

$ fab -I my_task
Initial value for env.password: 
6 голосов
/ 16 марта 2011

Один из способов сделать это без добавления пароля в список процессов (команды отображаются в ps aux) - поместить его в файл fabfile.py следующим образом:

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

Поставьте это перед чем-либо, что отправляется в удаленную систему, и он больше не будет запрашивать пароль.

1 голос
/ 04 декабря 2018

Также можно установить пароль ssh в connect_args

    conn = Connection(
    "{username}@{ip}:{port}".format(
        username=username,
        ip=ip,
        port=port,
    ),
    connect_kwargs={"password": password},
)
0 голосов
/ 29 декабря 2018

Можно надежно сохранить пароль в службе ключей операционной системы с помощью модуля keyring , после чего пароль может быть автоматически получен и использован в fabfile.py.

Сначала необходимо сохранить пароль в связке ключей, например, с помощью оболочки Python:

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

Затем вы можете использовать его в fabfile.py, например, с 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')
...