Python Fabric给出:致命错误:没有现有会话

ver*_*tim 12 python fabric

我从文档中得到以下简单的fabfile.py:

from fabric.api import run

def host_type():
    run('uname -s')
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下命令运行它:

fab -H 192.168.0.201 host_type
Run Code Online (Sandbox Code Playgroud)

但得到错误:

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.
Run Code Online (Sandbox Code Playgroud)

我可以ssh好到192.168.0.201.

有任何想法吗?

Tro*_*ell 22

简短回答:如果您有多个SSH公钥并且想要使用密码身份验证,请尝试使用'-k'和'-a'命令行标志.

当我遇到这个错误时,它是一个非常独特的情况的结果.我在〜/ .ssh中有许多不同的公钥.我还将许多公钥添加到我的SSH代理中.我试图只使用密码使用Fabric.

这是我在服务器身份验证日志中看到的内容:

Nov  7 07:56:02 ubuntu sshd[1862]: Disconnecting: Too many authentication failures for user [preauth]
Nov  7 07:56:08 ubuntu sshd[1864]: Disconnecting: Too many authentication failures for user [preauth]
Run Code Online (Sandbox Code Playgroud)

我已经指示Fabric使用非公钥来验证'-k'命令行标志.我错过了Fabric(通过Paramiko)默认使用SSH代理可用的任何东西.在我的例子中,所有这些公钥都是在SSH代理注册的,所以告诉Fabric不要使用公钥是一个不完整的解决方案.我添加了'-a'命令行标志,告诉Fabric不要查询SSH代理.最后,我可以使用密码身份验证通过Fabric连接到服务器.


Geo*_*tin -1

嗯,只是猜测......你试过这个吗?

def host_type():
    run('uname -s', pty=True)
Run Code Online (Sandbox Code Playgroud)

我记得我将此常见问题解答条目应用于类似的问题:http://docs.fabfile.org/en/1.0.0/faq.html#why-do-i-sometimes-see-err-stdin-is-not-阿蒂