我在用paramiko的SSH连接到锐捷交换机的时候,出现问题:
import paramiko
ip = '10.xx.xx.xx'
user = 'S****'
password = '******'
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip, username=user, password=password, port=22, look_for_keys=False)
出现以下错误。
Unknown exception: p must be exactly 1024, 2048, 3072, or 4096 bits long
Traceback (most recent call last):
File "D:\ProgramData\Anaconda3\lib\site-packages\paramiko\transport.py", line 2129, in run
self.kex_engine.parse_next(ptype, m)
File "D:\ProgramData\Anaconda3\lib\site-packages\paramiko\kex_gex.py", line 100, in parse_next
return self._parse_kexdh_gex_reply(m)
File "D:\ProgramData\Anaconda3\lib\site-packages\paramiko\kex_gex.py", line 282, in _parse_kexdh_gex_reply
self.transport._verify_key(host_key, sig)
File "D:\ProgramData\Anaconda3\lib\site-packages\paramiko\transport.py", line 1940, in _verify_key
if not key.verify_ssh_sig(self.H, Message(sig)):
File "D:\ProgramData\Anaconda3\lib\site-packages\paramiko\dsskey.py", line 149, in verify_ssh_sig
key = dsa.DSAPublicNumbers(
File "D:\ProgramData\Anaconda3\lib\site-packages\cryptography\hazmat\primitives\asymmetric\dsa.py", line 199, in public_key
return ossl.load_dsa_public_numbers(self)
File "D:\ProgramData\Anaconda3\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 843, in load_dsa_public_numbers
dsa._check_dsa_parameters(numbers.parameter_numbers)
File "D:\ProgramData\Anaconda3\lib\site-packages\cryptography\hazmat\primitives\asymmetric\dsa.py", line 271, in _check_dsa_parameters
raise ValueError(
ValueError: p must be exactly 1024, 2048, 3072, or 4096 bits long
参考GPT和自己的思路:这个错误提示指出了你使用的SSH连接的密钥长度不符合参数要求,参数要求密钥长度必须是1024、2048、3072或4096的比特。可以尝试更改使用的密钥长度,或者确定要连接的锐捷交换机是否支持当前长度的密钥。如果需要使用特定的密钥长度,请在SSH连接时指定相应的密钥长度。