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 __init__(self):
      super().__init__()
      self._socket_dir = None
      self._connections = dict()
      # Initialization of prev_connections is happening during initial
      # handling of socket_dir, so we do not define them here explicitly
      # to an empty list to fail if logic is violated
      self._prev_connections = None
  
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 1 to create a new MultiplexSSHManager object from inherited base classes: BaseSSHManager with example: obj = MultiplexSSHManager()