code: func SSHTunnelListener(addr string, config *SSHConfig) (Listener, error) {
  	ln, err := net.Listen("tcp", addr)
  	if err != nil {
  		return nil, err
  	}
  
  	if config == nil {
  		config = &SSHConfig{}
  	}
  
  	sshConfig := &ssh.ServerConfig{}
  	sshConfig.PasswordCallback = defaultSSHPasswordCallback(config.Authenticator)
  	if config.Authenticator == nil {
  		sshConfig.NoClientAuth = true
  	}
  	tlsConfig := config.TLSConfig
  	if tlsConfig == nil {
  		tlsConfig = DefaultTLSConfig
  	}
  
  	signer, err := ssh.NewSignerFromKey(tlsConfig.Certificates[0].PrivateKey)
  	if err != nil {
  		ln.Close()
  		return nil, err
  
  	}
  	sshConfig.AddHostKey(signer)
  
  	l := &sshTunnelListener{
  		Listener: tcpKeepAliveListener{ln.(*net.TCPListener)},
  		config:   sshConfig,
  		connChan: make(chan net.Conn, 1024),
  		errChan:  make(chan error, 1),
  	}
  
  	go l.listenLoop()
  
  	return l, nil
  }
docs: // SSHTunnelListener creates a Listener for SSH tunnel server.