我从文档中获得了以下简单的fabfile.py:
from fabric.api import run
def host_type():
run('uname -s')
我试着用:
fab -H 192.168.0.201 host_type
但是得到错误:
me@ubuntu:~/me$ fab -H 192.168.0.201 host_type
[192.168.0.201] run: uname -s
Password for me@192.168.0.201:
Fatal error: No existing session
Aborting.
我可以用ssh连接到192.168.0.201。
有什么想法吗?
更一般地说,如果出现此错误,应使用paramiko试图使用的确切参数尝试SSHing:
我发现,SSH密钥太多导致了我的fabric SSH连接的部分(但不是全部)失败,因为所有的密钥都提供给了远程主机。在过去,格式错误的键也会为我引发此错误消息(您可以通过从
~/.ssh/
中逐个删除键来检测它们)不幸的是,Fabric不尊重您的.ssh/config设置。如果要对此进行调试,可以运行以下命令:
检查
/tmp/paramiko.log
中的输出-您可能会看到如下内容:你可以set no_keys on the Fabric env environment:
但是,您需要告诉Fabric为特定主机使用特定密钥。如上所述,您可以在fab文件中使用:
更一般地说,here's a function to parse your .ssh config and pull out selective keys-在这个密钥中,要使用的SSH密钥。要使其自动工作,您需要将IdentityFile添加到
~/.ssh/config
:另一个失败的原因可能是paramiko does not recognize all host key types。这有点问题:paramiko正在悄悄地忽略
~/.ssh/known_hosts
中的宿主密钥,因为它不理解宿主密钥的格式。尝试使用-v进行ssh-ing,并查看ssh在哪一行中表示找到与以下项匹配的主机密钥:您可以尝试删除这一行,然后再次执行ssh并接受(新的?)主机键,然后看看帕拉米科是否高兴。不过,如果这是问题所在,而这并不能解决问题,那么我就看不到明确的解决方案。
把它修好
将这些线条添加到您的织物收口:
如果您将公共ssh密钥放在需要fab脚本访问的服务器上。
如果没有--删除您的.ssh目录这也有帮助
或者可以通过ssh-keygen创建ssh-key,然后使用1)和2)的组合
简而言之:如果您有多个SSH公钥并希望使用密码身份验证,请尝试使用'-k'和'-a'命令行标志。
当我遇到这个错误时,它是一个非常独特的情况的结果。我在~/.ssh中有许多不同的公钥。我的SSH代理中还添加了许多这些公钥。我试图只用一个密码来使用Fabric。
以下是我在服务器身份验证日志中看到的内容:
我已经指示Fabric使用非公钥来使用'-k'命令行标志进行身份验证。我错过了Fabric(通过Paramiko)默认使用SSH代理提供的任何内容。在我的例子中,所有这些公钥都是用SSH代理注册的,所以告诉Fabric不要使用公钥是一个不完整的解决方案。我添加了'-a'命令行标志,告诉Fabric不要查询SSH代理。最后,我可以使用密码身份验证通过Fabric连接到服务器。
相关问题 更多 >
编程相关推荐