Paramiko Ошибка чтения баннера протокола SSH после закрытия соединения SSH - PullRequest
0 голосов
/ 11 января 2019

Я обнаружил проблему, которая приводит к «Исключению: Ошибка чтения баннера протокола SSH» при входе в экземпляр EC2 с Paramiko 2.4 по 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...