我遇到了Fabric
无法识别我在~/.ssh/config
中的主机的问题。
我的fabfile.py
如下:
from fabric.api import run, env
env.hosts = ['lulu']
def whoami():
run('whoami')
运行$ fab whoami
会带来以下好处:
露露跑:哇哦!
致命错误: lulu的名称查找失败
在我的~/.ssh/config
中,名字是lulu
,如下所示:
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
名称的原因?
发布于 2012-03-13 21:42:03
从1.4.0版本开始,Fabric uses your ssh config (部分)。但是,您需要显式地启用它,
env.use_ssh_config = True
在你的文件顶部附近的某个地方。一旦这样做了,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
发布于 2011-04-15 16:30:24
请注意,当名称不在/etc/hosts
中时,也会发生这种情况。我遇到了同样的问题,必须将主机名添加到该文件和~/.ssh/config
中。
发布于 2010-09-02 22:35:10
更新:此答案is now outdated。
Fabric目前不支持.ssh/config文件。您可以在一个函数中设置这些参数,然后调用cli,例如: fab production任务;其中production设置用户名、主机名、端口和ssh身份。
至于rsync项目,现在应该有端口设置能力,如果没有,你可以随时运行本地(“rsync ...")因为这就是贡献函数的本质所在。
https://stackoverflow.com/questions/3077281
复制相似问题