当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用Fabric时连接到〜/.ssh/config中列出的主机》经验,为你挑选了3个好方法。

Fabric无法识别我所拥有的主机~/.ssh/config.

我的fabfile.py情况如下:

from fabric.api import run, env

env.hosts = ['lulu']

def whoami():
    run('whoami')

跑步$ fab whoami给出:

[lulu]跑:whoami

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

这个名字lulu在我的~/.ssh/config,就像这样:

Host lulu
     hostname 192.168.100.100
     port 2100
     IdentityFile ~/.ssh/lulu-key

我首先想到的解决,这是添加类似lulu.lulu/etc/hosts(我在Mac),但后来我不得不在身份文件还传递给面料-我宁愿让我的认证(即~/.ssh/config)从我的部署分开(即fabfile.py).

顺便说一句,顺便说一句,如果你试图连接到hosts文件中的主机,fabric.contrib.projects.rsync_project似乎并没有确认"端口" hosts.env(即如果你使用hosts.env = [lulu:2100]呼叫rsync_project似乎尝试连接lulu:21).

Fabric有没有认识这个lulu名字的原因?



1> rbp..:

从版本1.4.0开始,Fabric使用您的ssh配置(部分).但是,您需要使用显式启用它

env.use_ssh_config = True

靠近fabfile顶部的某个地方.执行此操作后,Fabric应读取您的ssh配置(~/.ssh/config默认情况下或从中env.ssh_config_path).

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

if env.ssh_config_path and os.path.isfile(os.path.expanduser(env.ssh_config_path)):
    env.use_ssh_config = True



2> MrD..:

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



3> Morgan..:

更新:此答案现已过时.


Fabric目前不支持.ssh/config文件.您可以在函数中设置它们然后调用cli,例如:fab生产任务; production设置用户名,主机名,端口和ssh标识.

至于rsync项目,现在应该具有端口设置能力,如果没有,你可以随时运行本地("rsync ..."),因为这基本上是贡献功能所做的.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有