2010-02-26 1 views
33

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

fab staging test 
+0

Я хотел бы рассмотреть очень внимательно, прежде чем принимать ** ** любую стратегию, которая занимается хранением паролей в незашифрованном виде - в качестве среды варов, сохраненными в скрипты, даже введенные в командной строке - так же, как мне не нравится противоречить светилу, например AM (на самом деле, человек, вы дали мне ** много информации за эти годы) - он живет в вашей истории команд и представляет угрозу безопасности. – gomad

ответ

47

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

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

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

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

52

Я знаю, что вы спросили о пароле, но не лучше ли настроить систему, чтобы вы могли делать ткань (т. Е. 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.

+2

Мне нужно было запустить 'chmod 700 ~/.ssh', чтобы заставить его работать –

+6

use ssh-copy-id может быть быстрее: ' 'ssh-copy-id'' Использование:/usr/bin/ssh-copy -id [-i [identity_file]] [user @] машина – HVNSweeting

+0

+1 для ssh-copy-id. Ухоженная! – dennis

6

Один из способов сделать это без ввода пароля в списке процессов (команды показывают в пс Окс), чтобы поместить его в fabfile.py так:

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

Помещенный, что прежде всего, что идет к удаленной системе, и он больше не будет запрашивать пароль.

+0

Просто обратите внимание, что это приводит к ошибке в последних версиях Fabric 1.5.3 и Paramiko 1.9.0. –

+0

Просто удалите 'from fabric import env' – Crazenezz

+1

Новый пакет context_managers,' from fabric.context_managers import env' –

47

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

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

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

+0

Огромное спасибо за этот ответ – qre0ct

8

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

пример:

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