我有麻烦^{~/.ssh/config
中拥有的主机。
我的fabfile.py
如下:
from fabric.api import run, env
env.hosts = ['lulu']
def whoami():
run('whoami')
运行$ fab whoami
给出:
[lulu] run: whoami
Fatal error: Name lookup failed for lulu
名称lulu
在我的~/.ssh/config
中,如下所示:
Host lulu
hostname 192.168.100.100
port 2100
IdentityFile ~/.ssh/lulu-key
我解决这个问题的第一个想法是添加一些类似lulu.lulu
的内容到/etc/hosts
(我在Mac上),但是我还必须将标识文件传递到Fabric—而且我宁愿将身份验证(即~/.ssh/config
)与部署(即fabfile.py
)分开。
另外,顺便说一下,如果您尝试连接到hosts文件中的主机,fabric.contrib.projects.rsync_project
似乎不承认hosts.env
中的“端口”(即,如果您使用hosts.env = [lulu:2100]
,则对rsync_project
的调用似乎尝试连接到lulu:21
)。
Fabric不识别这个lulu
名称有什么原因吗?
注意,当名称不在
/etc/hosts
中时,也会发生这种情况。我遇到了同样的问题,必须将主机名添加到该文件和~/.ssh/config
中。从1.4.0版开始,Fabric uses your ssh config(部分)。但是,您需要显式地启用它,使用
在你的档案的顶端附近。完成此操作后,Fabric应该读取ssh配置(默认情况下从
~/.ssh/config
,或者从env.ssh_config_path
)。一个警告:如果使用的版本早于1.5.4,则如果设置了
env.use_ssh_config
,但不存在配置文件,则会发生中止。在这种情况下,您可以使用如下解决方案:更新:这个答案is now outdated。
Fabric当前不支持.ssh/config文件。您可以在一个函数中设置这些参数,然后调用cli,例如:fab production task;production设置用户名、主机名、端口和ssh标识。
至于rsync项目,它现在应该具有端口设置功能,如果没有,您可以始终运行local(“rsync…”),因为这本质上是所贡献的函数所做的。
相关问题 更多 >
编程相关推荐