在我的fabfile
中,我已将env.use_ssh_config
设置为True
。每当我运行fabfile
时,它将从ssh配置中获得正确的hostname
和user
,但不是正确的密钥。它将随机通过我的密钥(全部存储在〜/ .ssh /中),要求我输入所有密钥的密码,直到找到正确的密钥。
唯一的面料给我带来了这个问题。在fabfile中将scp
作为local
命令运行使用正确的密钥。
Host example
HostName example.com
User elssar
IdentityFile ~/.ssh/id_example
PreferredAuthentications publickey
我的ssh配置中的条目如下所示。
我正在使用
Fabric 1.10.1
和Paramiko 1.14.1
,Python 2.7.3
和Ubuntu 12.04
。编辑-架构存储库中存在一个相关的未解决问题-https://github.com/fabric/fabric/issues/1282
编辑-我的fabfile的基本结构以及运行方式
from fabric.api import env, run
def do_something():
run("echo test")
def setup(host):
env.hosts = [host]
# command
fab server:hostname do_something
最佳答案
我尝试检查设置;这是我要调试的:
>>> from fabric.network import key_filenames
>>> key_filenames()
[]
>>> from fabric.state import env
>>> env.use_ssh_config = True
>>> env.host_string = 'salt-states'
>>> key_filenames()
['/Users/damien/.ssh/salt.rsa.priv']
更新:您可以更新fabfile来执行任务:
from fabric.api import env, run
from fabric.network import key_filenames
def do_something_debug():
env.use_ssh_config = True
print key_filenames()
run("echo test")
def server(host):
env.hosts = [host]
然后运行命令
fab server:hostname do_something_debug