我一直在尝试覆盖twisted conch模块中的默认身份验证方案。我以为我知道该怎么做。脚本本身就是this的答案
问题。我以以下方式子类化SSHUserAuthClient
:
class ClientUserAuth(SSHUserAuthClient):
def getPassword(self, prompt = None):
return defer.succeed("*****")
显然,我在脚本中将SSHUserAuthClient
调用替换为对我的类的调用。由于种种原因,我无法理解脚本不是在类中执行getPassword
方法,而是执行超类getPassword
方法。有人知道我做错了什么吗?
我对脚本所做的唯一其他更改是添加了以下模块导入
谢谢!在
奇怪的是,子类方法getPublicKey
被正确调用。只是getPassword
方法有点奇怪。在
您可能会看到键盘交互正在进行身份验证。这类似于密码验证,但是是分开的。您看到Linux和OSX之间不同行为的原因只是Linux和OSX的SSH服务器配置不同。在
重写
getGenericAnswers
来处理这个问题。在有关如何实现键盘交互身份验证的其他详细信息。在
我以为我第一次使用了这个,但是我的服务器发送了两个交互请求。第一个请求包含一个prompt=
[('Password: ', False)]
。第二个包含空提示=
[]
下面的代码适用于我测试过的每台服务器(Redhat、Ubuntu、OpenSUSE)
from twisted.conch.ssh import keys, userauth
启用Twisted登录有助于调试Conch在引擎盖下所做的工作。在
^{pr2}$相关问题 更多 >
编程相关推荐