【问题标题】:twisted conch, overriding authentication扭曲的海螺,压倒一切的身份验证
【发布时间】:2011-07-09 20:26:30
【问题描述】:

我一直在尝试覆盖扭曲海螺模块中的默认身份验证方案。我认为我知道该怎么做的事情。脚本本身就是this 的答案 题。我通过以下方式继承SSHUserAuthClient

class ClientUserAuth(SSHUserAuthClient):
    def getPassword(self, prompt = None):
        return defer.succeed("*****")

而且我显然正在用脚本中对我的班级的调用来替换 SSHUserAuthClient 调用。由于我无法理解的原因,脚本没有在我的类中执行 getPassword 方法,而是在超类 getPassword 方法中执行。有谁知道我做错了什么? 我对脚本所做的唯一其他更改是添加了以下模块导入

from twisted.internet import defer

谢谢!

编辑:奇怪的是子类方法getPublicKey 被正确调用。只是 getPassword 方法表现得很奇怪。

【问题讨论】:

    标签: python ssh twisted


    【解决方案1】:

    您可能实际上正在看到 keyboard-interactive 身份验证。这类似于密码验证,但是是分开的。您看到 Linux 和 OS X 之间行为不同的原因仅仅是您的 Linux 和 OS X SSH 服务器的配置不同。

    覆盖getGenericAnswers 来处理这个。

    【讨论】:

    • 好吧,我是个白痴。您的建议非常有效...再次感谢:)
    【解决方案2】:

    有关如何实现键盘交互身份验证的一些其他详细信息。

    我以为我第一次可以正常工作,但我的服务器发送了两个交互式请求。第一个请求包含提示 = [('Password: ', False)]
    第二个包含一个空提示 = []

    下面的代码适用于我迄今为止测试过的每台服务器(Redhat、Ubuntu、OpenSUSE)

    from twisted.conch.ssh import keys, userauth

    class ClientUserAuth(userauth.SSHUserAuthClient):
        def getPassword(self, prompt = None):
            #normal password authentication
            print "PASSWORD AUTH"
            return defer.succeed('*****') # <-- YOUR PASSWORD
    
        def getGenericAnswers(self, name, instruction, prompts):
            #interactive password authentication
            print "INTERACTIVE AUTH"
            response = ['']*len(prompts)
            for i, p in enumerate(prompts):
                try:
                    if('password' in p[0].lower()):
                        response[i] = '*****' # <-- YOUR PASSWORD
                except:
                    pass
            #The response is always a sequence, and the length of it is always
            #identical to the length of prompts
            return defer.succeed(response)
    

    在 Twisted 中启用日志记录有助于调试 Conch 在后台所做的工作。

    from twisted.python import log
    log.msg('Started Logging for A Conch Program')
    log.startLogging(sys.stdout)
    

    【讨论】:

      猜你喜欢
      • 2011-07-08
      • 1970-01-01
      • 2011-07-24
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      相关资源
      最近更新 更多