首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Fabric时连接到~/..ssh/config中列出的主机

使用Fabric时连接到~/..ssh/config中列出的主机
EN

Stack Overflow用户
提问于 2010-06-20 05:21:24
回答 4查看 28.2K关注 0票数 84

我遇到了Fabric无法识别我在~/.ssh/config中的主机的问题。

我的fabfile.py如下:

代码语言:javascript
复制
from fabric.api import run, env

env.hosts = ['lulu']

def whoami():
    run('whoami')

运行$ fab whoami会带来以下好处:

露露跑:哇哦!

致命错误: lulu的名称查找失败

在我的~/.ssh/config中,名字是lulu,如下所示:

代码语言:javascript
复制
Host lulu
     hostname 192.168.100.100
     port 2100
     IdentityFile ~/.ssh/lulu-key

我解决这个问题的第一个想法是将类似lulu.lulu的东西添加到/etc/hosts (我在Mac上),然后我还必须将身份文件传递给Fabric -而且我更愿意将身份验证(即~/.ssh/config)与部署(即fabfile.py)分开。

此外,顺便说一句,如果您尝试连接到主机文件中的主机,fabric.contrib.projects.rsync_project似乎不会确认hosts.env中的“端口”(即,如果您使用hosts.env = [lulu:2100],则调用rsync_project似乎会尝试连接到lulu:21)。

是否有Fabric无法识别此lulu名称的原因?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-13 21:42:03

从1.4.0版本开始,Fabric uses your ssh config (部分)。但是,您需要显式地启用它,

代码语言:javascript
复制
env.use_ssh_config = True

在你的文件顶部附近的某个地方。一旦这样做了,Fabric就应该读取您的ssh配置(默认情况下从~/.ssh/config读取,或者从env.ssh_config_path读取)。

警告:如果您使用的是早于1.5.4的版本,则在设置了env.use_ssh_config但没有配置文件的情况下将发生中止。在这种情况下,您可以使用如下解决方法:

代码语言:javascript
复制
if env.ssh_config_path and os.path.isfile(os.path.expanduser(env.ssh_config_path)):
    env.use_ssh_config = True
票数 146
EN

Stack Overflow用户

发布于 2011-04-15 16:30:24

请注意,当名称不在/etc/hosts中时,也会发生这种情况。我遇到了同样的问题,必须将主机名添加到该文件和~/.ssh/config中。

票数 9
EN

Stack Overflow用户

发布于 2010-09-02 22:35:10

更新:此答案is now outdated

Fabric目前不支持.ssh/config文件。您可以在一个函数中设置这些参数,然后调用cli,例如: fab production任务;其中production设置用户名、主机名、端口和ssh身份。

至于rsync项目,现在应该有端口设置能力,如果没有,你可以随时运行本地(“rsync ...")因为这就是贡献函数的本质所在。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3077281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档