2012-11-08 50 views
2

我正在嘗試SSH進入正在運行的EC2實例,但每次都會出現以下錯誤。嘗試使用boto.manage.cmdshell向運行實例的SSH進行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() 

Traceback (most recent call last): File "/home/.../FirstModule.py", line 26, in cmd.shell() File "/usr/lib/python2.7/dist-packages/boto/manage/cmdshell.py", line 114, in shell interactive_shell(channel) File "/usr/lib/python2.7/dist-packages/boto/mashups/interactive.py", line 34, in interactive_shell posix_shell(chan) File "/usr/lib/python2.7/dist-packages/boto/mashups/interactive.py", line 42, in posix_shell oldtty = termios.tcgetattr(sys.stdin) termios.error: (22, 'Invalid argument')

任何線索,爲什麼這個錯誤被顯示出來?

回答

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'~/' 
+0

什麼是用戶名?您登錄的人還是?謝謝 – user702846