def METHOD_NAME(self) -> channel.Channel:
    if self._client is None:
        self._client = paramiko.SSHClient()
        try:
            c = paramiko.config.SSHConfig()
            with open(pathlib.Path.home() / ".ssh" / "config") as cfg:
                c.parse(cfg)
            self._config = c.lookup(self.hostname)
        except FileNotFoundError:
            # Config file does not exist
            pass
        except Exception as e:
            # Invalid config
            tbot.log.warning(
                tbot.log.c("Invalid").red + f" .ssh/config: {str(e):s}"
            )
            raise
        if self.ignore_hostkey:
            self._client.set_missing_host_key_policy(
                paramiko.client.AutoAddPolicy()
            )
        else:
            self._client.load_system_host_keys()
        password = None
        key_file = None
        authenticator = self.authenticator
        if isinstance(authenticator, auth.NoneAuthenticator):
            pass
        elif isinstance(authenticator, auth.PrivateKeyAuthenticator):
            key_file = authenticator.get_key_for_host(None)
        elif isinstance(authenticator, auth.PasswordAuthenticator):
            password = authenticator.password
        else:
            if typing.TYPE_CHECKING:
                authenticator._undefined_marker
            raise ValueError(f"Unknown authenticator {authenticator!r}")
        tbot.log.message(
            "Logging in on "
            + tbot.log.c(f"{self.username}@{self.hostname}:{self.port}").yellow
            + " ...",
            verbosity=tbot.log.Verbosity.COMMAND,
        )
        if "hostname" in self._config:
            hostname = str(self._config["hostname"])
        else:
            hostname = self.hostname
        self._client.connect(
            hostname,
            username=self.username,
            port=self.port,
            password=password,
            key_filename=key_file,
        )
    return channel.ParamikoChannel(self._client.get_transport().open_session())