class_docstr: Keeps ssh connections to share. Serves singleton representation
  per connection.
  
  A custom identity file can be specified via `datalad.ssh.identityfile`.
  Callers are responsible for reloading `datalad.cfg` if they have changed
  this value since loading datalad.
class_docstr_tok: ["Keeps","ssh","connections","to","share",".","Serves","singleton","representation","per","connection",".","A","custom","identity","file","can","be","specified","via","`","datalad.ssh.identityfile","`",".","Callers","are","responsible","for","reloading","`","datalad.cfg","`","if","they","have","changed","this","value","since","loading","datalad","."]
code: def get_connection(
      self, url, use_remote_annex_bundle=None, force_ip=False
  ):
      sshri, identity_file = self._prep_connection_args(url)
  
      conhash = get_connection_hash(
          sshri.hostname,
          port=sshri.port,
          identity_file=identity_file or "",
          username=sshri.username,
          force_ip=force_ip,
      )
      # determine control master:
      ctrl_path = self.socket_dir / conhash
  
      # do we know it already?
      if ctrl_path in self._connections:
          return self._connections[ctrl_path]
      else:
          c = MultiplexSSHConnection(
              ctrl_path,
              sshri,
              identity_file=identity_file,
              use_remote_annex_bundle=use_remote_annex_bundle,
              force_ip=force_ip,
          )
          self._connections[ctrl_path] = c
          return c
  
imports: import fasteners
  import os
  import logging
  from socket import gethostname
  from hashlib import md5
  from subprocess import Popen
  import tempfile
  import threading
  from datalad.utils import quote_cmdlinearg
  from datalad.support.exceptions import CapturedException, CommandError, ConnectionOpenFailedError
  from datalad.support.external_versions import external_versions
  from datalad.utils import auto_repr, Path, ensure_list, on_windows
  from datalad.cmd import NoCapture, StdOutErrCapture, WitlessRunner
  from ..None import cfg
label_desc: Use image node_id 4 for calling the MultiplexSSHManager obj's underlying member method code with example usage: obj.get_connection(url, use_remote_annex_bundle, force_ip) and returns: self, c