ssh-rsa 私钥验证

问题描述 投票:0回答:1

有什么方法可以验证给定的字符串是合法的 ssh rsa 私钥吗?

我只需要验证实际的密钥 - 我不关心密钥类型或相应私钥的比较。

目标是确保输入文件是否是有效的 ssh 私钥。

如果有任何可用的Python模块或代码片段那就太好了。

谢谢。

我想验证通过REST API传输的ssh密钥,我想确定密钥是否有效。

python-3.x ssh-keys ssh-keygen
1个回答
0
投票

您可以通过检查 SSH RSA 私钥的格式并确保可以使用 Python 中的

cryptography
库成功加载它来验证它。该库提供了使用加密密钥的工具,可用于验证 SSH 密钥的有效性。

首先,您需要安装

cryptography
库(如果您尚未安装)。您可以使用 pip 安装它:

pip install cryptography

这是一个 Python 代码片段,演示如何验证 SSH RSA 私钥:

from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend
from cryptography.exceptions import InvalidSignature

def is_valid_ssh_rsa_private_key(key_string):
    try:
        # Attempt to load the private key
        private_key = serialization.load_ssh_private_key(
            key_string.encode(),
            password=None,
            backend=default_backend()
        )
        
        # Check if the key is an instance of RSAPrivateKey
        if private_key.key_size is not None:  # This indicates it's a valid RSA key
            return True

    except (ValueError, TypeError):  # Catch exceptions related to invalid key formats
        pass
    
    return False

# Example usage
if __name__ == "__main__":
    ssh_key = """-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA7...
-----END RSA PRIVATE KEY-----"""

    if is_valid_ssh_rsa_private_key(ssh_key):
        print("The SSH RSA private key is valid.")
    else:
        print("The SSH RSA private key is invalid.")

说明:

  1. 函数
    is_valid_ssh_rsa_private_key
    接受字符串输入 代表 SSH RSA 私钥。
  2. 它尝试使用
    serialization.load_ssh_private_key
    加载密钥。
  3. 如果加载成功并且密钥是RSA密钥(通过检查
    private_key.key_size
    ),它返回 True。
  4. 如果加载过程中出现任何异常,则返回False,表示密钥无效。

确保将占位符 ssh_key 变量替换为您要验证的实际 SSH 私钥字符串。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.