コード例 #1
0
def open_ssh_connection(dispatcher, backup):
    peer = dispatcher.call_sync('peer.query', [('id', '=', backup['peer'])],
                                {'single': True})
    if not peer:
        raise TaskException(errno.ENOENT,
                            'Cannot find peer {0}'.format(backup['peer']))

    if peer['type'] != 'ssh':
        raise TaskException(errno.EINVAL,
                            'Invalid peer type: {0}'.format(peer['type']))

    creds = peer['credentials']
    try:
        session = transport.Transport(creds['address'], creds.get('port', 22))
        session.window_size = 1024 * 1024 * 1024
        session.packetizer.REKEY_BYTES = pow(2, 48)
        session.packetizer.REKEY_PACKETS = pow(2, 48)
        session.start_client()

        if creds.get('privkey'):
            if try_key_auth(session, creds):
                return session
            else:
                raise Exception('Cannot authenticate using keys')

        session.auth_password(creds['username'], creds['password'].secret)
        return session

    except socket.gaierror as err:
        raise Exception('Connection error: {0}'.format(err.strerror))
    except ssh_exception.BadAuthenticationType as err:
        raise Exception('Cannot authenticate: {0}'.format(str(err)))
コード例 #2
0
def get_available_key_algorithms() -> Set[str]:
    """
    Gets a set of the available key algorithms supported by server.
    Returns:
        (Set[str]): Set of supported ciphers.
    """
    tmp_socket = socket.socket()
    opts = transport.Transport(tmp_socket).get_security_options()
    tmp_socket.close()
    return set(opts.kex)
コード例 #3
0
def open_ssh_connection(hostport, username, password, use_keys):
        try:
            session = transport.Transport(split_hostport(hostport))
            session.window_size = 1024 * 1024 * 1024
            session.packetizer.REKEY_BYTES = pow(2, 48)
            session.packetizer.REKEY_PACKETS = pow(2, 48)
            session.start_client()

            if use_keys:
                if try_key_auth(session, username):
                    return session
                else:
                    raise Exception('Cannot authenticate using keys')

            session.auth_password(username, password)
            return session

        except socket.gaierror as err:
            raise Exception('Connection error: {}'.format(err.strerror))
        except ssh_exception.BadAuthenticationType:
            raise Exception('Cannot authenticate')
コード例 #4
0
ファイル: bootstrap.py プロジェクト: killerwails-zz/forge
def ssh_keyscan(host):
    """ Get the SSH host key from a remote server by connecting to it """
    from paramiko import transport
    with transport.Transport(host) as ssh:
        ssh.start_client()
        return ssh.get_remote_server_key()
コード例 #5
0
 def _connect(self):
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     s.connect((self.server, 22))
     tr = transport.Transport(s)
     tr.connect(username=self.user, pkey=self._p_key)
     self._sftp_client = tr.open_sftp_client()
コード例 #6
0
	def connect(self):
		self._sock = socket.socket()
		self._sock.connect(self._server_endpoint)
		self._ssh_client = transport.Transport(self._sock)
		self._ssh_client.connect(username=self._username, password=self._password)
		self._ssh_session = self._ssh_client.open_session()