Ошибка при попытке подключиться к запущенному экземпляру EC2 по SSH с помощью boto.manage.cmdshell

Я пытаюсь подключиться к работающему экземпляру EC2 по SSH, но каждый раз он выдает следующую ошибку.

import os
import boto.manage.cmdshell

ec2 = boto.connect_ec2()
key_dir= '~/'
key_name='keypair'
key_extension='.pem'
key_path = os.path.join(os.path.expanduser(key_dir),
                    key_name+key_extension)
reservations = ec2.get_all_instances()
instance = reservations[0].instances[0]

cmd = boto.manage.cmdshell.sshclient_from_instance(instance,
                                               key_path,
                                               host_key_file='~/.ssh/known_hosts',
                                               user_name='ec2-user')

cmd.shell()

Отслеживание (последний вызов последним): файл "/home/.../FirstModule.py", строка 26, в файле cmd.shell () "/usr/lib/python2.7/dist-packages/boto/manage/ cmdshell.py ", строка 114, в файле оболочки interactive_shell (канал)" /usr/lib/python2.7/dist-packages/boto/mashups/interactive.py ", строка 34, в файле interactive_shell posix_shell (chan)" / usr / lib / python2.7 / dist-packages / boto / mashups / interactive.py ", строка 42, в posix_shell oldtty = termios.tcgetattr (sys.stdin) termios.error: (22, 'Недопустимый аргумент')

Любая подсказка, почему появляется эта ошибка?


person NS2    schedule 08.11.2012    source источник


Ответы (1)


Одна из возможностей состоит в том, что имя пути к файлу hosts не является необработанной строкой. Это может помочь сделать следующее:

cmd = boto.manage.cmdshell.sshclient_from_instance(
          instance,
          key_path,
          host_key_file=r'~/.ssh/known_hosts',
          user_name='ec2-user'
       )

Вы также можете указать значение key_dir.

key_dir = r'~/'
person Uday    schedule 13.11.2012