<p>有关如何实现键盘交互身份验证的其他详细信息。在</p>
<p>我以为我第一次使用了这个,但是我的服务器发送了两个交互请求。第一个请求包含一个prompt=<code>[('Password: ', False)]</code>。<br/>第二个包含空提示=<code>[]</code></p>
<p>下面的代码适用于我测试过的每台服务器(Redhat、Ubuntu、OpenSUSE)</p>
<p><code>
from twisted.conch.ssh import keys, userauth</code></p>
<pre><code>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)
</code></pre>
<p/>
<p>启用Twisted登录有助于调试Conch在引擎盖下所做的工作。在</p>
^{pr2}$