'SSH client.
Many of parameters are just passed to the underlying implementation
as it is.  See the paramiko documentation for more details.
http://docs.paramiko.org/en/2.1/api/client.html#paramiko.client.SSHClient.connect
:param host: Host to login.
:param username: SSH username.
:param password: SSH password, or a password to unlock private key.
:param timeout: Timeout in seconds, including retries.
Default is 300 seconds.
:param pkey: Private key.
:param channel_timeout: Channel timeout in seconds, passed to the
paramiko.  Default is 10 seconds.
:param look_for_keys: Whether or not to search for private keys
in ``~/.ssh``.  Default is False.
:param key_filename: Filename for private key to use.
:param port: SSH port number.
:param proxy_client: Another SSH client to provide a transport
for ssh-over-ssh.  The default is None, which means
not to use ssh-over-ssh.
:type proxy_client: ``tempest.lib.common.ssh.Client`` object'

def __init__(self, host, username, password=None, timeout=300, pkey=None, channel_timeout=10, look_for_keys=False, key_filename=None, port=22, proxy_client=None):

    self.host = host
    self.username = username
    self.port = port
    self.password = password
    if isinstance(pkey, six.string_types):
        pkey = paramiko.RSAKey.from_private_key(six.StringIO(str(pkey)))
    self.pkey = pkey
    self.look_for_keys = look_for_keys
    self.key_filename = key_filename
    self.timeout = int(timeout)
    self.channel_timeout = float(channel_timeout)
    self.buf_size = 1024
    self.proxy_client = proxy_client
    self._proxy_conn = None
