面料密码

boc*_*cca 37 python fabric

每次结构运行时,它都会询问root密码,是否可以自动发送.

fab staging test
Run Code Online (Sandbox Code Playgroud)

nkr*_*rkv 56

我知道你已经问过密码,但配置系统不是更好,这样你就可以在没有密码的情况下进行结构(即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

从现在起,您的远程计算机"信任"您的本地计算机,并允许在没有密码的情况下登录.便利.

  • 使用ssh-copy-id可能会更快:``ssh-copy-id``用法:/ usr/bin/ssh-copy-id [-i [identity_file]] [user @] machine (8认同)
  • 我不得不运行`chmod 700~/.ssh`来让它工作 (2认同)

小智 50

您还可以基于每个主机设置密码.这对我来说并不明显,所以这里适合任何寻找此事的人:

from fabric import env
env.hosts = ['user1@host1:port1', 'user2@host2.port2']
env.passwords = {'user1@host1:port1': 'password1', 'user2@host2.port2': 'password2'}
Run Code Online (Sandbox Code Playgroud)

Fabric缓存在env.passwords字典中使用了密码.它使用完整主机字符串作为该字典的键和密码作为值来设置此缓存.如果您在执行任何任务之前自己设置此字典,Fabric将根本不会要求它们.


Ale*_*lli 48

fab -h会告诉你所有选项,你也可以在这里阅读.

特别是,我引用,

-p PASSWORD, - password = PASSWORD

将env.password设置为给定的字符串; 然后,在进行SSH连接或调用sudo程序时,它将用作默认密码.


小智 8

只是为了从搜索中结束这里的任何人添加,您可以-I在运行fab时指定该选项,以提示您输入默认密码.这样在命令历史记录中就不会显示它

例:

$ fab -I my_task
Initial value for env.password: 
Run Code Online (Sandbox Code Playgroud)


fah*_*hem 6

不将密码放入进程列表(命令显示在ps aux中)的一种方法是将它放在fabfile.py中,如下所示:

from fabric.context_managers import env
env.password = 'PASSWORD'
Run Code Online (Sandbox Code Playgroud)

把它放在任何进入远程系统的东西之前,它不再需要密码了.


mir*_*ein 6

也可以设置 ssh 密码 connect_args

    conn = Connection(
    "{username}@{ip}:{port}".format(
        username=username,
        ip=ip,
        port=port,
    ),
    connect_kwargs={"password": password},
)
Run Code Online (Sandbox Code Playgroud)