当前位置: 首页>>代码示例>>Python>>正文


Python paramiko.DSSKey方法代码示例

本文整理汇总了Python中paramiko.DSSKey方法的典型用法代码示例。如果您正苦于以下问题:Python paramiko.DSSKey方法的具体用法?Python paramiko.DSSKey怎么用?Python paramiko.DSSKey使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在paramiko的用法示例。


在下文中一共展示了paramiko.DSSKey方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: get_authorized_keys

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def get_authorized_keys(path):
    keys = []
    with open(path) as fp:
        for line in fp:
            flds = line.split(' ')
            if len(flds) < 2: continue
            if flds[0] == 'ssh-rsa':
                f = paramiko.RSAKey
            elif flds[0] == 'ssh-dss':
                f = paramiko.DSSKey
            elif flds[0].startswith('ecdsa-'):
                f = paramiko.ECDSAKey
            else:
                continue
            data = decodebytes(flds[1].encode('ascii'))
            keys.append(f(data=data))
    return keys

# run_server 
开发者ID:euske,项目名称:pyrexecd,代码行数:21,代码来源:__init__.py

示例2: get_pkey_obj

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def get_pkey_obj(cls, privatekey, password, filename):
        bpass = to_bytes(password) if password else None

        pkey = cls.get_specific_pkey(paramiko.RSAKey, privatekey, bpass)\
            or cls.get_specific_pkey(paramiko.DSSKey, privatekey, bpass)\
            or cls.get_specific_pkey(paramiko.ECDSAKey, privatekey, bpass)\
            or cls.get_specific_pkey(paramiko.Ed25519Key, privatekey, bpass)

        if not pkey:
            if not password:
                error = 'Invalid private key: {}'.format(filename)
            else:
                error = (
                    'Wrong password {!r} for decrypting the private key.'
                ) .format(password)
            raise InvalidValueError(error)

        return pkey 
开发者ID:guohongze,项目名称:adminset,代码行数:20,代码来源:handler.py

示例3: ssh_key_gen

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def ssh_key_gen(length=2048, type='rsa', password=None, username='jumpserver', hostname=None):
    """Generate user ssh private and public key

    Use paramiko RSAKey generate it.
    :return private key str and public key str
    """

    if hostname is None:
        hostname = os.uname()[1]

    f = StringIO()
    try:
        if type == 'rsa':
            private_key_obj = paramiko.RSAKey.generate(length)
        elif type == 'dsa':
            private_key_obj = paramiko.DSSKey.generate(length)
        else:
            raise IOError('SSH private key must be `rsa` or `dsa`')
        private_key_obj.write_private_key(f, password=password)
        private_key = f.getvalue()
        public_key = ssh_pubkey_gen(private_key_obj, username=username, hostname=hostname)
        return private_key, public_key
    except IOError:
        raise IOError('These is error when generate ssh key.') 
开发者ID:getway,项目名称:diting,代码行数:26,代码来源:utils.py

示例4: test_4_dict_set

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def test_4_dict_set(self):
        hostdict = paramiko.HostKeys('hostfile.temp')
        key = paramiko.RSAKey(data=decodebytes(keyblob))
        key_dss = paramiko.DSSKey(data=decodebytes(keyblob_dss))
        hostdict['secure.example.com'] = {
            'ssh-rsa': key,
            'ssh-dss': key_dss
        }
        hostdict['fake.example.com'] = {}
        hostdict['fake.example.com']['ssh-rsa'] = key
        
        self.assertEqual(3, len(hostdict))
        self.assertEqual(2, len(list(hostdict.values())[0]))
        self.assertEqual(1, len(list(hostdict.values())[1]))
        self.assertEqual(1, len(list(hostdict.values())[2]))
        fp = hexlify(hostdict['secure.example.com']['ssh-rsa'].get_fingerprint()).upper()
        self.assertEqual(b'7EC91BB336CB6D810B124B1353C32396', fp)
        fp = hexlify(hostdict['secure.example.com']['ssh-dss'].get_fingerprint()).upper()
        self.assertEqual(b'4478F0B9A23CC5182009FF755BC1D26C', fp) 
开发者ID:hpe-storage,项目名称:python-hpedockerplugin,代码行数:21,代码来源:test_hostkeys.py

示例5: connect

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def connect(self, host, user, password=None, ssh_key=None, port=22, timeout=30,
                term='xterm', pty_width=80, pty_height=24):
        try:
            ssh_client = paramiko.SSHClient()
            ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

            if ssh_key:
                key = get_key_obj(paramiko.RSAKey, pkey_obj=ssh_key, password=password) or \
                      get_key_obj(paramiko.DSSKey, pkey_obj=ssh_key, password=password) or \
                      get_key_obj(paramiko.ECDSAKey, pkey_obj=ssh_key, password=password) or \
                      get_key_obj(paramiko.Ed25519Key, pkey_obj=ssh_key, password=password)

                ssh_client.connect(username=user, hostname=host, port=port, pkey=key, timeout=timeout)
            else:
                ssh_client.connect(username=user, password=password, hostname=host, port=port, timeout=timeout)

            transport = ssh_client.get_transport()
            self.channel = transport.open_session()
            self.channel.get_pty(term=term, width=pty_width, height=pty_height)
            self.channel.invoke_shell()

            for i in range(2):
                recv = self.channel.recv(1024).decode('utf-8')
                self.message['status'] = 0
                self.message['message'] = recv
                message = json.dumps(self.message)
                self.websocker.send(message)
        except socket.timeout:
            self.message['status'] = 1
            self.message['message'] = 'ssh 连接超时'
            message = json.dumps(self.message)
            self.websocker.send(message)
            self.close()
        except:
            self.close() 
开发者ID:huyuan1999,项目名称:django-webssh,代码行数:37,代码来源:ssh.py

示例6: get_pkey

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def get_pkey(self, privatekey, password):
        password = password.encode('utf-8') if password else None

        pkey = self.get_specific_pkey(paramiko.RSAKey, privatekey, password)\
            or self.get_specific_pkey(paramiko.DSSKey, privatekey, password)\
            or self.get_specific_pkey(paramiko.ECDSAKey, privatekey, password)\
            or self.get_specific_pkey(paramiko.Ed25519Key, privatekey,
                                      password)
        if not pkey:
            raise ValueError('Not a valid private key file or '
                             'wrong password for decrypting the private key.')
        return pkey 
开发者ID:hequan2017,项目名称:chain,代码行数:14,代码来源:main.py

示例7: test_get_pkey_obj_with_plain_new_dsa_key

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def test_get_pkey_obj_with_plain_new_dsa_key(self):
        pk = self.get_pk_obj('test_new_dsa.key')
        self.assertIsInstance(pk.get_pkey_obj(), paramiko.DSSKey) 
开发者ID:huashengdun,项目名称:webssh,代码行数:5,代码来源:test_handler.py

示例8: load_keyfile

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def load_keyfile(keyfile):
  for cls in (paramiko.RSAKey, paramiko.DSSKey, paramiko.ECDSAKey):
    try:
      return cls.from_private_key_file(keyfile)
    except paramiko.SSHException:
      pass
  else:
    raise 
开发者ID:lanjelot,项目名称:patator,代码行数:10,代码来源:patator.py

示例9: _get_pkey_object

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def _get_pkey_object(self, key_material, passphrase):
        """
        Try to detect private key type and return paramiko.PKey object.
        """

        for cls in [paramiko.RSAKey, paramiko.DSSKey, paramiko.ECDSAKey]:
            try:
                key = cls.from_private_key(StringIO(key_material), password=passphrase)
            except paramiko.ssh_exception.SSHException:
                # Invalid key, try other key type
                pass
            else:
                return key

        # If a user passes in something which looks like file path we throw a more friendly
        # exception letting the user know we expect the contents a not a path.
        # Note: We do it here and not up the stack to avoid false positives.
        contains_header = REMOTE_RUNNER_PRIVATE_KEY_HEADER in key_material.lower()
        if not contains_header and (key_material.count('/') >= 1 or key_material.count('\\') >= 1):
            msg = ('"private_key" parameter needs to contain private key data / content and not '
                   'a path')
        elif passphrase:
            msg = 'Invalid passphrase or invalid/unsupported key type'
        else:
            msg = 'Invalid or unsupported key type'

        raise paramiko.ssh_exception.SSHException(msg) 
开发者ID:StackStorm,项目名称:st2,代码行数:29,代码来源:paramiko_ssh.py

示例10: _is_key_file_needs_passphrase

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def _is_key_file_needs_passphrase(file):
        for cls in [paramiko.RSAKey, paramiko.DSSKey, paramiko.ECDSAKey]:
            try:
                cls.from_private_key_file(file, password=None)
            except paramiko.ssh_exception.PasswordRequiredException:
                return True
            except paramiko.ssh_exception.SSHException:
                continue

        return False 
开发者ID:StackStorm,项目名称:st2,代码行数:12,代码来源:paramiko_ssh.py

示例11: get_host_key

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def get_host_key(path):
    if path.endswith('rsa_key'):
        f = paramiko.RSAKey
    elif path.endswith('dsa_key'):
        f = paramiko.DSSKey
    elif path.endswith('ecdsa_key'):
        f = paramiko.ECDSAKay
    else:
        raise ValueError(path)
    return f(filename=path)

# get_authorized_keys 
开发者ID:euske,项目名称:pyrexecd,代码行数:14,代码来源:__init__.py

示例12: ssh_key_string_to_obj

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def ssh_key_string_to_obj(text, password=None):
    key = None
    try:
        key = paramiko.RSAKey.from_private_key(StringIO(text), password=password)
    except paramiko.SSHException:
        pass

    try:
        key = paramiko.DSSKey.from_private_key(StringIO(text), password=password)
    except paramiko.SSHException:
        pass
    return key 
开发者ID:getway,项目名称:diting,代码行数:14,代码来源:utils.py

示例13: ssh_pubkey_gen

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def ssh_pubkey_gen(private_key=None, username='jumpserver', hostname='localhost', password=None):
    if isinstance(private_key, bytes):
        private_key = private_key.decode("utf-8")
    if isinstance(private_key, string_types):
        private_key = ssh_key_string_to_obj(private_key, password=password)
    if not isinstance(private_key, (paramiko.RSAKey, paramiko.DSSKey)):
        raise IOError('Invalid private key')

    public_key = "%(key_type)s %(key_content)s %(username)s@%(hostname)s" % {
        'key_type': private_key.get_name(),
        'key_content': private_key.get_base64(),
        'username': username,
        'hostname': hostname,
    }
    return public_key 
开发者ID:getway,项目名称:diting,代码行数:17,代码来源:utils.py

示例14: ssh_key_string_to_obj

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def ssh_key_string_to_obj(text, password=None):
    key = None
    try:
        key = paramiko.RSAKey.from_private_key(StringIO(text), password=password)
    except paramiko.SSHException:
        pass

    try:
        key = paramiko.DSSKey.from_private_key(StringIO(text), password=password)
    except paramiko.SSHException:
        pass
    return key


# def ssh_pubkey_gen(private_key=None, username='jumpserver', hostname='localhost'):
#     if isinstance(private_key, str):
#         private_key = ssh_key_string_to_obj(private_key)
#
#     if not isinstance(private_key, (paramiko.RSAKey, paramiko.DSSKey)):
#         raise IOError('Invalid private key')
#
#     public_key = "%(key_type)s %(key_content)s %(username)s@%(hostname)s" % {
#         'key_type': private_key.get_name(),
#         'key_content': private_key.get_base64(),
#         'username': username,
#         'hostname': hostname,
#     }
#     return public_key
#
#
# def ssh_key_gen(length=2048, type='rsa', password=None,
#                 username='jumpserver', hostname=None):
#     """Generate user ssh private and public key
#
#     Use paramiko RSAKey generate it.
#     :return private key str and public key str
#     """
#
#     if hostname is None:
#         hostname = os.uname()[1]
#
#     f = StringIO()
#
#     try:
#         if type == 'rsa':
#             private_key_obj = paramiko.RSAKey.generate(length)
#         elif type == 'dsa':
#             private_key_obj = paramiko.DSSKey.generate(length)
#         else:
#             raise IOError('SSH private key must be `rsa` or `dsa`')
#         private_key_obj.write_private_key(f, password=password)
#         private_key = f.getvalue()
#         public_key = ssh_pubkey_gen(private_key_obj, username=username, hostname=hostname)
#         return private_key, public_key
#     except IOError:
#         raise IOError('These is error when generate ssh key.') 
开发者ID:jumpserver,项目名称:jumpserver-python-sdk,代码行数:58,代码来源:utils.py

示例15: __resolve_private_key

# 需要导入模块: import paramiko [as 别名]
# 或者: from paramiko import DSSKey [as 别名]
def __resolve_private_key(self, private_key, agent_keys):
		private_key = private_key.strip()
		pkey_type = private_key.split(':', 1)[0].lower()
		if pkey_type in ('file', 'key'):
			if pkey_type == 'file':
				file_path = os.path.expandvars(private_key[5:])
				if not os.access(file_path, os.R_OK):
					self.logger.warning("the user specified ssh key file '{0}' can not be opened".format(file_path))
					raise KingPhisherSSHKeyError('The SSH key file can not be opened.')
				self.logger.debug('loading the user specified ssh key file: ' + file_path)
				file_h = open(file_path, 'r')
				first_line = file_h.readline()
				file_h.seek(0, os.SEEK_SET)
			else:
				self.logger.debug('loading the user specified ssh key string from memory')
				key_str = private_key[4:]
				file_h = io.StringIO(key_str)
				first_line = key_str.split('\n', 1)[0]

			if 'BEGIN DSA PRIVATE KEY' in first_line:
				KeyKlass = paramiko.DSSKey
			elif 'BEGIN RSA PRIVATE KEY' in first_line:
				KeyKlass = paramiko.RSAKey
			else:
				file_h.close()
				self.logger.warning('the user specified ssh key does not appear to be a valid dsa or rsa private key')
				raise KingPhisherSSHKeyError('The SSH key file is not a DSA or RSA private key.')
			try:
				private_key = KeyKlass.from_private_key(file_h)
			except paramiko.PasswordRequiredException:
				self.logger.warning('the user specified ssh key is encrypted and requires a password')
				raise
			finally:
				file_h.close()
			return private_key
		# if the key has whitespace, discard anything after the first occurrence
		private_key = private_key.split(' ', 1)[0]

		# if it's not one of the above, treat it like it's a fingerprint
		if pkey_type == 'sha256':
			# OpenSSH 6.8 started to use sha256 & base64 for keys
			algorithm = pkey_type
			private_key = private_key[7:] + '='
			decode = binascii.a2b_base64
		else:
			algorithm = 'md5'
			private_key = private_key.replace(':', '')
			decode = binascii.a2b_hex
		try:
			private_key = decode(private_key)
		except binascii.Error as error:
			self.logger.warning("the user specified ssh key could not be decoded (type: {0}, error: {1!r})".format(pkey_type, error))
			raise KingPhisherSSHKeyError('The preferred SSH key could not be decoded.')
		private_key = tuple(key for key in agent_keys if hashlib.new(algorithm, key.blob).digest() == private_key)
		if not private_key:
			self.logger.warning('the user specified ssh key could not be loaded from the ssh agent')
			raise KingPhisherSSHKeyError('The preferred SSH key could not be loaded from the SSH agent.')
		return private_key[0] 
开发者ID:rsmusllp,项目名称:king-phisher,代码行数:60,代码来源:ssh_forward.py


注:本文中的paramiko.DSSKey方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。