Example #1
0
 def create(self):
     ssh = paramiko.SSHClient()
     ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
     look_for_keys = True
     if self.path_to_private_key:
         self.path_to_private_key = os.path.expanduser(
             self.path_to_private_key)
         look_for_keys = False
     elif self.password:
         look_for_keys = False
     try:
         LOG.debug(
             "ssh.connect: ip: %s, port: %s, username: %s, "
             "password: %s, key_filename: %s, look_for_keys: %s, "
             "timeout: %s, banner_timeout: %s", self.ip, self.port,
             self.login, self.password, self.path_to_private_key,
             look_for_keys, self.conn_timeout, self.conn_timeout)
         ssh.connect(self.ip,
                     port=self.port,
                     username=self.login,
                     password=self.password,
                     key_filename=self.path_to_private_key,
                     look_for_keys=look_for_keys,
                     timeout=self.conn_timeout,
                     banner_timeout=self.conn_timeout)
         if self.conn_timeout:
             transport = ssh.get_transport()
             transport.set_keepalive(self.conn_timeout)
         return ssh
     except Exception as e:
         msg = _("Check whether private key or password are correctly "
                 "set. Error connecting via ssh: %s") % e
         LOG.error(msg)
         raise exception.SSHException(msg)
Example #2
0
 def create(self):
     ssh = paramiko.SSHClient()
     ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
     look_for_keys = True
     if self.path_to_private_key:
         self.path_to_private_key = os.path.expanduser(
             self.path_to_private_key)
         look_for_keys = False
     elif self.password:
         look_for_keys = False
     try:
         ssh.connect(self.ip,
                     port=self.port,
                     username=self.login,
                     password=self.password,
                     key_filename=self.path_to_private_key,
                     look_for_keys=look_for_keys,
                     timeout=self.conn_timeout)
         # Paramiko by default sets the socket timeout to 0.1 seconds,
         # ignoring what we set through the sshclient. This doesn't help for
         # keeping long lived connections. Hence we have to bypass it, by
         # overriding it after the transport is initialized. We are setting
         # the sockettimeout to None and setting a keepalive packet so that,
         # the server will keep the connection open. All that does is send
         # a keepalive packet every ssh_conn_timeout seconds.
         if self.conn_timeout:
             transport = ssh.get_transport()
             transport.sock.settimeout(None)
             transport.set_keepalive(self.conn_timeout)
         return ssh
     except Exception as e:
         msg = _("Check whether private key or password are correctly "
                 "set. Error connecting via ssh: %s") % e
         LOG.error(msg)
         raise exception.SSHException(msg)