Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python fabric一直在询问密码_Python_Ssh_Fabric - Fatal编程技术网

Python fabric一直在询问密码

Python fabric一直在询问密码,python,ssh,fabric,Python,Ssh,Fabric,我有一个包含 env['hosts'] = ['localhost'] env['user'] = 'code' env['password'] = 'searce' def mk_dirtree(): sudo("mkdir %s" % PROJECT_DIR) sudo("chown -R code:code %s" % PROJECT_DIR) run("mkdir -p %s" % (PROJECT_DIR + '/www/static')) sudo(

我有一个包含

env['hosts'] = ['localhost']
env['user'] = 'code'
env['password'] = 'searce'

def mk_dirtree():
    sudo("mkdir %s" % PROJECT_DIR)
    sudo("chown -R code:code %s" % PROJECT_DIR)
    run("mkdir -p %s" % (PROJECT_DIR + '/www/static'))
    sudo("chown -R www-data:www-data %s" % (PROJECT_DIR + '/www'))
现在,当我做
fab mk_dirtree
时,我会不断提示输入“code”的
[localhost]登录密码:

我在一个ec2实例上运行它,我使用密钥通过ssh连接到该实例,ssh的密码登录被禁用

编辑: 我认为fabric首先要做的是
sshcode@localhost
但这不起作用,因为密码sshing被禁用

运行()和sudo()操作是通过ssh执行的。如果要在本地主机上运行命令,则应改为使用
local()


同一页上有
run()
sudo()
的文档,这两个文档都提到了它们在“远程主机”上运行的事实,这意味着它们将通过ssh运行。

如果您真的想并且需要使用
run()
而不是
local()
您可以将SSH公钥添加到用户帐户的
~/.SSH/authorized_keys
文件中

这看起来像这样:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

此解决方案将绕过本地计算机的登录密码提示。当然,您必须在运行fabfile的每台本地计算机上执行此操作。

这确实帮助了我在iMac上的工作。我正在开发run()命令,这允许在本地主机上快速测试这些命令。