Paramiko 支持基于证书的身份验证吗?
key_filename
方法中的connect
提到它同时支持私钥和证书,这里的证书是指基于证书的身份验证吗?
key_filename (str) – 文件名或文件名列表 用于尝试身份验证的可选私钥和/或证书
connect(hostname, port=22, username=None, password=None, pkey=None,
key_filename=None, timeout=None, allow_agent=True,
look_for_keys=True, compress=False, sock=None, gss_auth=False,
gss_kex=False, gss_deleg_creds=True, gss_host=None,
banner_timeout=None, auth_timeout=None, gss_trust_dns=True,
passphrase=None, disabled_algorithms=None)
Paramiko 支持支持证书的专有 OpenSSH 公钥算法。
方法的文档对此更加清晰(比
key_filename
参数本身的文档):
key_filename
可能包含OpenSSH 公共证书路径 以及常规私钥路径;
我所处的情况是,我以字符串形式获取证书,并将该字符串存储到文件中,而不是作为参数传递路径。
我是这样解决问题的:
private_key = paramiko.ECDSAKey.from_private_key(key_string, password=password)
sshclient = paramiko.SSHClient()
sshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
private_key.load_certificate(certificate_string)
sshclient.connect(hostname=host, username=user, pkey=private_key)
当密钥和证书在字符串中时,希望它能帮助解决问题。