code: func DialWithDeadline(network string, addr string, config *ssh.ClientConfig) (*ssh.Client, error) {
  	conn, err := net.DialTimeout(network, addr, config.Timeout)
  	if err != nil {
  		return nil, err
  	}
  	return NewClientConnWithDeadline(conn, addr, config)
  }
docs: // DialWithDeadline works around the case when net.DialWithTimeout
  // succeeds, but key exchange hangs. Setting deadline on connection
  // prevents this case from happening