'Authentication is always attempted in the following order:
- The key passed in (if key is provided)
- Any key we can find through an SSH agent (only if no password and
key is provided)
- Any "id_rsa" or "id_dsa" key discoverable in ~/.ssh/ (only if no
password and key is provided)
- Plain username/password auth, if a password was given (if password is
provided)'

def __init__(self, hostname, port=22, username='root', password=None, key=None, key_files=None, key_material=None, timeout=None):

    if (key_files and key_material):
        raise ValueError('key_files    and    key_material    arguments    are    mutually    exclusive')
    super(ParamikoSSHClient, self).__init__(hostname=hostname, port=port, username=username, password=password, key=key, key_files=key_files, timeout=timeout)
    self.key_material = key_material
    self.client = paramiko.SSHClient()
    self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    self.logger = self._get_and_setup_logger()
