<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def connect(self, username, password, key, address, port, jump_host):
 """ Connect ssh tunnel and shell executor to remote host :type username: str :param username: username for authentication :type password: str :param password: password for authentication, may be used to unlock rsa key :type key: str :param key: path to rsa key for authentication :type address: str :param address: address for remote host :type port: int :param port: ssh port for remote host """

        if port is None:
            self.remote_port = 22
        else:
            self.remote_port = int(port)

        auth = Auth(username=username, password=password, key=key)
        if jump_host is not None:
            jump_auth = Auth(username=jump_host['username'],
                             password=jump_host['password'],
                             key=jump_host['key'])
            if jump_host['port'] is None:
                jump_host['port'] = 22
        else:
            jump_auth = None
        self.shell.connect(auth, address, self.remote_port, jump_host, jump_auth)
        transport = self.shell.transport()
        self.tunnel.configure(transport, auth, address, self.remote_port)
        self.remote_addr = address