File: //opt/saltstack/salt/lib/python3.10/site-packages/zmq/ssh/__pycache__/tunnel.cpython-310.pyc
o
�N�g�3 � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZddlmZm Z ddl
mZ z$e�� � e�
de� ddlZejjZW d � n1 sJw Y W n eyc dZG dd� de�ZY nw dd lmZ zddlZW n ey{ dZY nw d
d� Ze�dej�Zd%d
d�Zdd� Zdd� Z d&dd�Zd&dd�Z d'dd�Z dd� Z!dd� Z" d'dd �Z#d(d!d"�Z$ej%d#kr�e#Z&ne Z&g d$�Z'dS ))zXBasic ssh tunnel utilities, and convenience functions for tunneling
zeromq connections.
� N)�getpass�getuser)�Process�ignorec @ s e Zd ZdS )�SSHExceptionN)�__name__�
__module__�__qualname__� r
r
�B/opt/saltstack/salt/lib/python3.10/site-packages/zmq/ssh/tunnel.pyr s r � )�forward_tunnelc C sZ g }g }t | �D ]}t�� }|�d� |�|�� d � |�|� q|D ]}|�� q$|S )z4Select and return n random ports that are available.)� r r )�range�socket�bind�append�getsockname�close)�nZportsZsockets�i�sockr
r
r �select_random_ports* s
r s pass(word|phrase):c C s* |du r t jdk}|st}nt}|| |�S )z�Attempt to make an ssh connection without a password.
This is mainly used for requiring password input only once
when many tunnels may be connected to the same server.
If paramiko is None, the default for the platform is chosen.
N�win32)�sys�platform�_try_passwordless_openssh�_try_passwordless_paramiko)�server�keyfile�paramiko�fr
r
r �try_passwordless_ssh>