web-dev-qa-db-ja.com

ファブリックパスワード

ファブリックが実行されるたびに、ルートパスワードが要求され、自動提案のために同じように送信できます。

fab staging test
38
bocca

fab -hはすべてのオプションを表示します。それらを読むこともできます ここ

特に、私は引用します、

-p PASSWORD、-password = PASSWORD

Env.passwordを指定された文字列に設定します。その後、SSH接続を行うとき、またはSudoプログラムを呼び出すときに、デフォルトのパスワードとして使用されます。

48
Alex Martelli

パスワードについてお伺いしたことは承知しておりますが、パスワードなしでファブリック(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に貼り付けます

これで、リモートマシンはローカルマシンを「信頼」し、パスワードなしでログインできるようになります。ハンディ。

57
nkrkv

ホストごとにパスワードを設定することもできます。それは私には自明ではなかったので、ここではこれを探している人が利用できます。

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

ファブリックは、使用されたパスワードをenv.passwords辞書にキャッシュします。完全なホスト文字列をその辞書のキーとして使用し、パスワードを値として使用して、このキャッシュを設定します。タスクを実行する前にこのディクショナリを自分で設定した場合、Fabricはそれらを要求しません。

50
stunsch

検索からここまでくる人のために追加するために、-Iオプションを使用してfabを実行すると、デフォルトのパスワードを使用するように求められますこれにより、コマンド履歴に表示されなくなります

例:

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

プロセスリストにパスワードを入力せずにこれを行う1つの方法(ps auxにコマンドが表示されます)は、次のようにfabfile.pyにパスワードを入力することです。

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

リモートシステムに送信されるものの前にそれを置くと、パスワードを要求されなくなります。

6
fahhem

connect_argsにsshパスワードを設定することも可能です

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

keyring モジュールを使用して、オペレーティングシステムのキーリングサービスにパスワードを安全に保存できます。パスワードは自動的に取得され、fabfile.pyで使用できます。

最初に、たとえばPython Shellを使用して、キーリングにパスワードを保存する必要があります。

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

次に、それをfabfile.pyで、たとえばファブリック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