2017-03-08 9 views
0

私は、オンデマンドのawsインスタンスでGenymotionを使用しており、Pythonから接続しようとしています。私は、Pythonからインスタンスにadbコマンドを送信したいと思います。例えば、SSHトンネルを作成するために使用https://www.genymotion.com/help/on-demand/tutorial/enable-disable-adb/paramiko ec2デバイスに接続しようとしているときにEOFError

sshコマンドは次のとおりです:

ssh -i key.pem -NL 5555:localhost:5555 [email protected]_ip 

私はparamikoライブラリを使用しようとしました、そして前進があり、ここで任意のコンピュータからインスタンスを接続するためのチュートリアルです。 pyデモをレポから受け取りました(https://github.com/paramiko/paramiko/blob/master/demos/forward.py)。

まず、私は、CLIを介してトンネルを作成しようとし、これは私がSSHトンネルを作成するために入力したものである:

python forward.py <instance_ip> -r localhost:5555 -u root -p 5555 -K "path/to/mykey.pem" 

応答があった:

Connecting to ssh host <instance_ip>:22 ... 
*** Failed to connect to <instance_ip>:22: EOFError() 

I「はcouldnここで何が問題なのか把握してください。

誰かが私を助けることができますか?どうもありがとうございました!!

答えて

0

次のコードスニペットを使用して、PythonのEC2インスタンスに対してsshを実行できます。

key = paramiko.RSAKey.from_private_key_file(path/to/mykey.pem) 
client = paramiko.SSHClient() 
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

# Connect/ssh to an instance 
try: 
    client.connect(hostname=instance_ip, username="root", pkey=key) 

    # Execute a command(cmd) after connecting/ssh to an instance 
    stdin, stdout, stderr = client.exec_command(cmd) 
    print stdout.read() 

    # close the client connection once the job is done 
    client.close() 
    break 

except Exception, e: 
    print e 
+0

私は実際に(これもこのような)多くのスニペットを試しました。毎回同じ "EOFError"を投げます。私の秘密鍵ファイルには問題があるかもしれないと思いますが、本当に何が問題なのか分かりません。 – Johnny127

+0

私が掲示したコードについては、1)間違ったpemキー2)間違ったインスタンスIP 3)間違ったEC2インスタンスのユーザー名があります。これらの項目を確認してください。3.それでも問題が解決しない場合は、ここにコードを記入してください。注:pemファイル名を含む完全なファイルパスを指定してください。例:key_path = os.path.join( 'license'、 'file_name.pem') – Venkatesh

+0

また、あなたのキーとIPアドレスがあなたのLinuxマシンからきれいなsshであることを確認し、接続が確立されているかどうかを確認してください。 ssh -i file_name.pem user_name @ ip_address – Venkatesh

関連する問題