Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python paramiko EOFError在尝试连接ec2设备时_Python_Ssh_Amazon Ec2_Paramiko_Ssh Tunnel - Fatal编程技术网

Python paramiko EOFError在尝试连接ec2设备时

Python paramiko EOFError在尝试连接ec2设备时,python,ssh,amazon-ec2,paramiko,ssh-tunnel,Python,Ssh,Amazon Ec2,Paramiko,Ssh Tunnel,我正在使用Genymotion on demand aws实例,并尝试从python连接它。我想从python向实例发送adb命令。这里有一个从任何计算机连接实例的教程: 用于为实例创建ssh隧道的ssh命令为: ssh -i key.pem -NL 5555:localhost:5555 root@instance_ip 我尝试使用paramiko库和repo()中的forward.py演示 首先,我尝试通过cli创建隧道,这是我为创建ssh隧道输入的内容: python forward.p

我正在使用Genymotion on demand aws实例,并尝试从python连接它。我想从python向实例发送adb命令。这里有一个从任何计算机连接实例的教程:

用于为实例创建ssh隧道的ssh命令为:

ssh -i key.pem -NL 5555:localhost:5555 root@instance_ip
我尝试使用paramiko库和repo()中的forward.py演示

首先,我尝试通过cli创建隧道,这是我为创建ssh隧道输入的内容:

python forward.py <instance_ip> -r localhost:5555 -u root -p 5555 -K "path/to/mykey.pem"
python forward.py-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()
连接到ssh主机:22。。。
***无法连接到:22:EOFError()
我想不出这里有什么问题


有人能帮我吗?非常感谢

您可以使用以下代码片段从Python ssh到EC2实例

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

实际上我试过很多这样的片段(还有这一个)。每次它都会给我同样的“EOFError”。我认为我的私钥文件可能有问题,但我真的不知道问题出在哪里。对于我发布的代码,唯一不起作用的原因可能是1)错误的pem密钥2)错误的实例IP 3)错误的EC2实例用户名。请检查这三个。如果这没有帮助,请在此处发布您的代码。注意:提供完整的文件路径,包括pem文件名。例如:key_path=os.path.join('license','file_name.pem'),并确保您的密钥和ip地址在linux机器上正常运行,并查看是否建立了连接。ssh-i文件_name.pem用户_name@ip_addressI完全按照你说的做了(实际上很多次),但仍然不起作用。paramiko.RSAKey.from_private_key_文件行运行良好,我还看到paramiko包中pkey.py中的函数_read_private_key看起来不错。我的终端的ssh也可以工作。你知道检查我的pem文件的其他方法吗?顺便说一下,非常感谢!