关闭SSH连接后,Paramiko阅读SSH协议标语时出错

时间:2019-01-11 20:57:38

标签: python ssh paramiko

我发现了一个问题,当通过Paramiko 2.4通过SSH登录到EC2实例时,该问题导致出现“异常:读取SSH协议标志时出错”。下面的简单示例适用于运行以登录到服务器,或者如果我在没有代码的情况下将腻子插入服务器,但是如果在关闭连接后第二次运行(即使重新启动了python应用程序)。连接将无法正常工作,并且服务器不再能够通过SSH重新访问。

我尝试使用隧道而不是客户端,并且发生了相同的事情。我还配置了不同的横幅超时和连接超时,没有不同的结果。我不能正确关闭连接吗?与下面的内容有什么不同?我的代码在下面列出,谢谢!

my_key = """-----BEGIN RSA PRIVATE KEY-----
A VALID RSA KEY I CAN USE WITH PUTTY TO LOGIN
-----END RSA PRIVATE KEY-----"""
public_dns_url ='ec2-3-22-11-111.compute-1.amazonaws.com'
pkey = paramiko.RSAKey.from_private_key(StringIO(my_key))
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.load_system_host_keys()
c.connect(hostname=public_dns_url,username= "ubuntu",pkey=pkey)
stdin, stdout, stderr = c.exec_command('ls -l')
print(stdout.read())
c.close()

代码的第一次运行正确显示“ ls”:

b'total 2812\ndrwxrwxr-x 23 ubuntu ubuntu    4096 Dec 11 09:01 anaconda2\ndrwxrwxr-x 25 ubuntu ubuntu    4096 Dec 11 10:49 anaconda3\ndrwxrwxr-x  3 ubuntu ubuntu    4096 Jan  9 16:30\n'

代码的第二次运行给了我横幅错误:

  File "C:\Users\James\Anaconda3\lib\site-packages\paramiko\transport.py", line 2143, in _check_banner
    "Error reading SSH protocol banner" + str(e)
paramiko.ssh_exception.SSHException: Error reading SSH protocol banner

0 个答案:

没有答案