[Twisted-Python] Possible error on key authentication of twisted conch

Mustafa Sakalsiz sakalsiz at gmail.com
Fri Jan 23 07:55:28 EST 2009


Hello,

I have a python script that executes a python code on a remote host using
SSH. It was working perfectly with Twisted 2.5. The method of returning
private and public has changed in userauth.SSHUserAuthClient (Twisted 8.1).

I was using (Twisted 2.5)
------------------------------------------------
def getPublicKey(self):
  return keys.getPublicKeyString(self.keyfile+'.pub')

def getPrivateKey(self):
  return defer.succeed(keys.getPrivateKeyObject(self.keyfile))


Now I am using (Twisted 8.1)
----------------------------------------------------
def getPublicKey(self):
  return keys.Key.fromFile(self.keyfile+'.pub')

def getPrivateKey(self):
  return defer.succeed(keys.Key.fromFile(self.keyfile))

and it doesn't work any more. I have attached the simplified script. Here is
the scenario I am using and the exception I got. Any help is greatly
appreciated.

Scenario
----------------------
I am creating a DSA key using ssh-keygen (in Debian and Ubuntu) with an
empty password

$ ssh-keygen -t dsa

and copy it to my localhost

$ ssh-copy-id -i ~/.ssh/id_dsa localhost

then run the attached script, which tries to execute a python script
remotely using SSH and get the following error

Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/twisted/internet/selectreactor.py",
line 146, in _doReadOrWrite
    why = getattr(selectable, method)()
  File "/usr/lib/python2.5/site-packages/twisted/internet/tcp.py", line 362,
in doRead
    return self.protocol.dataReceived(data)
  File "/usr/lib/python2.5/site-packages/twisted/conch/ssh/transport.py",
line 314, in dataReceived
    self.dispatchMessage(messageNum, packet[1:])
  File "/usr/lib/python2.5/site-packages/twisted/conch/ssh/transport.py",
line 336, in dispatchMessage
    messageNum, payload)
--- <exception caught here> ---
  File "/usr/lib/python2.5/site-packages/twisted/python/log.py", line 51, in
callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "/usr/lib/python2.5/site-packages/twisted/python/log.py", line 36, in
callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "/usr/lib/python2.5/site-packages/twisted/python/context.py", line
59, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/usr/lib/python2.5/site-packages/twisted/python/context.py", line
37, in callWithContext
    return func(*args,**kw)
  File "/usr/lib/python2.5/site-packages/twisted/conch/ssh/service.py", line
44, in packetReceived
    return f(packet)
  File "/usr/lib/python2.5/site-packages/twisted/conch/ssh/userauth.py",
line 262, in ssh_USERAUTH_FAILURE
    if method not in self.authenticatedWith and self.tryAuth(method):
  File "/usr/lib/python2.5/site-packages/twisted/conch/ssh/userauth.py",
line 234, in tryAuth
    return f()
  File "/usr/lib/python2.5/site-packages/twisted/conch/ssh/userauth.py",
line 338, in auth_publickey
    keyType = getNS(publicKey)[0]
  File "/usr/lib/python2.5/site-packages/twisted/conch/ssh/common.py", line
51, in getNS
    l, = struct.unpack('!L',s[c:c+4])
exceptions.TypeError: 'Key' object is unsubscriptable

Sincerely

Saki
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20090123/109940b8/attachment.htm 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mysshconnection.py
Type: text/x-python
Size: 7644 bytes
Desc: not available
Url : http://twistedmatrix.com/pipermail/twisted-python/attachments/20090123/109940b8/attachment.py 


More information about the Twisted-Python mailing list