每次结构运行时,它都会询问root密码,是否可以自动发送.
fab staging test
nkrkv.. 56
我知道你已经问过密码,但配置系统不是更好,这样你就可以在没有密码的情况下进行结构(即SSH)吗?
为此,在本地机器上执行:
ssh-keygen
并同意所有默认值(如果您没有其他原因)
cat ~/.ssh/id_rsa.pub
并复制该密钥
在远程机器上:
mkdir ~/.ssh && chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys2 && chmod 600 ~/.ssh/authorized_keys2
将复制的密钥粘贴到 authorized_keys2
从现在起,您的远程计算机"信任"您的本地计算机,并允许在没有密码的情况下登录.便利.
我知道你已经问过密码,但配置系统不是更好,这样你就可以在没有密码的情况下进行结构(即SSH)吗?
为此,在本地机器上执行:
ssh-keygen
并同意所有默认值(如果您没有其他原因)
cat ~/.ssh/id_rsa.pub
并复制该密钥
在远程机器上:
mkdir ~/.ssh && chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys2 && chmod 600 ~/.ssh/authorized_keys2
将复制的密钥粘贴到 authorized_keys2
从现在起,您的远程计算机"信任"您的本地计算机,并允许在没有密码的情况下登录.便利.
您还可以基于每个主机设置密码.这对我来说并不明显,所以这里适合任何寻找此事的人:
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字典中使用了密码.它使用完整主机字符串作为该字典的键和密码作为值来设置此缓存.如果您在执行任何任务之前自己设置此字典,Fabric将根本不会要求它们.
fab -h
会告诉你所有选项,你也可以在这里阅读.
特别是,我引用,
-p PASSWORD, - password = PASSWORD
将env.password设置为给定的字符串; 然后,在进行SSH连接或调用sudo程序时,它将用作默认密码.
只是为了从搜索中结束这里的任何人添加,您可以-I
在运行fab时指定该选项,以提示您输入默认密码.这样在命令历史记录中就不会显示它
例:
$ fab -I my_task Initial value for env.password:
不将密码放入进程列表(命令显示在ps aux中)的一种方法是将它放在fabfile.py中,如下所示:
from fabric.context_managers import env env.password = 'PASSWORD'
把它放在任何进入远程系统的东西之前,它不再需要密码了.