t.c.s.u.SSHUserAuthClient(service.SSHService) : class documentation

Part of twisted.conch.ssh.userauth View Source View In Hierarchy

Known subclasses: twisted.conch.client.default.SSHUserAuthClient, twisted.conch.scripts.tkconch.SSHUserAuthClient

A service implementing the client side of 'ssh-userauth'.
Instance Variablesnamethe name of this service: 'ssh-userauth' (type: str )
preferredOrdera list of authentication methods we support, in order of preference. The client will try authentication methods in this order, making callbacks for information when necessary. (type: list )
userthe name of the user to authenticate as (type: str )
instancethe service to start after authentication has finished (type: service.SSHService )
authenticatedWitha list of strings of authentication methods we've tried (type: list of str )
triedPublicKeysa list of public key objects that we've tried to authenticate with (type: list of Key )
lastPublicKeythe last public key object we've tried to authenticate with (type: Key )
Method __init__ Undocumented
Method serviceStarted called when the service is active on the transport.
Method askForAuth Send a MSG_USERAUTH_REQUEST.
Method tryAuth Dispatch to an authentication method.
Method ssh_USERAUTH_SUCCESS We received a MSG_USERAUTH_SUCCESS. The server has accepted our
Method ssh_USERAUTH_FAILURE

We received a MSG_USERAUTH_FAILURE. Payload:


Method ssh_USERAUTH_PK_OK This message (number 60) can mean several different messages depending
Method ssh_USERAUTH_PK_OK_publickey This is MSG_USERAUTH_PK. Our public key is valid, so we create a
Method ssh_USERAUTH_PK_OK_password This is MSG_USERAUTH_PASSWD_CHANGEREQ. The password given has expired.
Method ssh_USERAUTH_PK_OK_keyboard_interactive This is MSG_USERAUTH_INFO_RESPONSE. The server has sent us the
Method auth_publickey Try to authenticate with a public key. Ask the user for a public key;
Method auth_password Try to authenticate with a password. Ask the user for a password.
Method auth_keyboard_interactive Try to authenticate with keyboard-interactive authentication. Send
Method signData Sign the given data with the given public key.
Method getPublicKey Return a public key for the user. If no more public keys are
Method getPrivateKey Return a Deferred that will be called back with the private key
Method getPassword Return a Deferred that will be called back with a password.
Method getGenericAnswers Returns a Deferred with the responses to the promopts.
Method _ebAuth Generic callback for a failed authentication attempt. Respond by
Method _cbUserauthFailure Undocumented
Method _cbSignedData Called back out of self.signData with the signed data. Send the
Method _setOldPass Called back when we are choosing a new password. Simply store the old
Method _setNewPass Called back when we are choosing a new password. Get the old password
Method _cbGenericAnswers Called back when we are finished answering keyboard-interactive
Method _cbGetPublicKey Undocumented
Method _cbPassword Called back when the user gives a password. Send the request to the
Method _cbSignData Called back when the private key is returned. Sign the data and

Inherited from SSHService:

Method serviceStopped called when the service is stopped, either by the connection ending
Method logPrefix Override this method to insert custom logging behavior. Its
Method packetReceived called when we receive a packet on the transport
def __init__(self, user, instance): (source)
Undocumented
def serviceStarted(self): (source)
called when the service is active on the transport.
def askForAuth(self, kind, extraData): (source)
Send a MSG_USERAUTH_REQUEST.
Parameterskindthe authentication method to try. (type: str )
extraDatamethod-specific data to go in the packet (type: str )
def tryAuth(self, kind): (source)
Dispatch to an authentication method.
Parameterskindthe authentication method (type: str )
def _ebAuth(self, ignored, *args): (source)
Generic callback for a failed authentication attempt. Respond by asking for the list of accepted methods (the 'none' method)
def ssh_USERAUTH_SUCCESS(self, packet): (source)
We received a MSG_USERAUTH_SUCCESS. The server has accepted our authentication, so start the next service.
def ssh_USERAUTH_FAILURE(self, packet): (source)
We received a MSG_USERAUTH_FAILURE. Payload:

   string methods
   byte partial success

If partial success is True, then the previous method succeeded but is not sufficent for authentication. methods is a comma-separated list of accepted authentication methods.

We sort the list of methods by their position in self.preferredOrder, removing methods that have already succeeded. We then call self.tryAuth with the most preferred method.

Parameterspacketthe MSG_USERAUTH_FAILURE payload. (type: str )
Returnsa defer.Deferred that will be callbacked with None as soon as all authentication methods have been tried, or None if no more authentication methods are available. (type: defer.Deferred or None )
def _cbUserauthFailure(self, result, iterator): (source)
Undocumented
def ssh_USERAUTH_PK_OK(self, packet): (source)
This message (number 60) can mean several different messages depending on the current authentication type. We dispatch to individual methods in order to handle this request.
def ssh_USERAUTH_PK_OK_publickey(self, packet): (source)
This is MSG_USERAUTH_PK. Our public key is valid, so we create a signature and try to authenticate with it.
def ssh_USERAUTH_PK_OK_password(self, packet): (source)
This is MSG_USERAUTH_PASSWD_CHANGEREQ. The password given has expired. We ask for an old password and a new password, then send both back to the server.
def ssh_USERAUTH_PK_OK_keyboard_interactive(self, packet): (source)
This is MSG_USERAUTH_INFO_RESPONSE. The server has sent us the questions it wants us to answer, so we ask the user and sent the responses.
def _cbSignedData(self, signedData): (source)
Called back out of self.signData with the signed data. Send the authentication request with the signature.
ParameterssignedDatathe data signed by the user's private key. (type: str )
def _setOldPass(self, op): (source)
Called back when we are choosing a new password. Simply store the old password for now.
Parametersopthe old password as entered by the user (type: str )
def _setNewPass(self, np): (source)
Called back when we are choosing a new password. Get the old password and send the authentication message with both.
Parametersnpthe new password as entered by the user (type: str )
def _cbGenericAnswers(self, responses): (source)
Called back when we are finished answering keyboard-interactive questions. Send the info back to the server in a MSG_USERAUTH_INFO_RESPONSE.
Parametersresponsesa list of str responses (type: list )
def auth_publickey(self): (source)
Try to authenticate with a public key. Ask the user for a public key; if the user has one, send the request to the server and return True. Otherwise, return False.
Returns (type: bool )
def _cbGetPublicKey(self, publicKey): (source)
Undocumented
def auth_password(self): (source)
Try to authenticate with a password. Ask the user for a password. If the user will return a password, return True. Otherwise, return False.
Returns (type: bool )
def auth_keyboard_interactive(self): (source)
Try to authenticate with keyboard-interactive authentication. Send the request to the server and return True.
Returns (type: bool )
def _cbPassword(self, password): (source)
Called back when the user gives a password. Send the request to the server.
Parameterspasswordthe password the user entered (type: str )
def signData(self, publicKey, signData): (source)
Sign the given data with the given public key.

By default, this will call getPrivateKey to get the private key, then sign the data using Key.sign().

This method is factored out so that it can be overridden to use alternate methods, such as a key agent.

ParameterspublicKeyThe public key object returned from getPublicKey (type: keys.Key )
signDatathe data to be signed by the private key. (type: str )
Returnsa Deferred that's called back with the signature (type: defer.Deferred )
def _cbSignData(self, privateKey, signData): (source)
Called back when the private key is returned. Sign the data and return the signature.
ParametersprivateKeythe private key object
publicKey (type: keys.Key )
signDatathe data to be signed by the private key. (type: str )
Returnsthe signature (type: str )
def getPublicKey(self): (source)
Return a public key for the user. If no more public keys are available, return None.

This implementation always returns None. Override it in a subclass to actually find and return a public key object.

Returns (type: Key or NoneType )
def getPrivateKey(self): (source)
Return a Deferred that will be called back with the private key object corresponding to the last public key from getPublicKey(). If the private key is not available, errback on the Deferred.
Returns (type: Deferred called back with Key )
def getPassword(self, prompt=None): (source)
Return a Deferred that will be called back with a password. prompt is a string to display for the password, or None for a generic 'user@hostname's password: '.
Parametersprompt (type: str/None )
Returns (type: defer.Deferred )
def getGenericAnswers(self, name, instruction, prompts): (source)
Returns a Deferred with the responses to the promopts.
ParametersnameThe name of the authentication currently in progress.
instructionDescribes what the authentication wants.
promptsA list of (prompt, echo) pairs, where prompt is a string to display and echo is a boolean indicating whether the user's response should be echoed as they type it.
API Documentation for Twisted, generated by pydoctor at 2010-07-05 15:03:32.