Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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和AWS EC2的关键问题_Python_Amazon Web Services_Paramiko - Fatal编程技术网

Python 与Paramiko和AWS EC2的关键问题

Python 与Paramiko和AWS EC2的关键问题,python,amazon-web-services,paramiko,Python,Amazon Web Services,Paramiko,我正在尝试登录到远程计算机(EC2)。但它一直在说存在SSHException,并且密钥无效 paramiko.ssh_exception.SSHException: Invalid key (class: RSAKey, data type: oQIBAAKCAQEApkTX3as35p1TF9W.............. 这是我的代码: import paramiko amznKey = "MIIEoQIBAAKCAQEApkTX3as35p1TF9W............." ke

我正在尝试登录到远程计算机(EC2)。但它一直在说存在SSHException,并且密钥无效

paramiko.ssh_exception.SSHException: Invalid key (class: RSAKey, data type: oQIBAAKCAQEApkTX3as35p1TF9W..............
这是我的代码:

import paramiko

amznKey = "MIIEoQIBAAKCAQEApkTX3as35p1TF9W............."
key = paramiko.RSAKey(data=bytes(amznKey, 'utf-8'))
client = paramiko.SSHClient()
client.get_host_keys().add('ubuntu@ec2-3-123-12-80.us-east-2.compute.amazonaws.com', 
'ssh-rsa', key)
client.connect('ubuntu@ec2-2-134-99-80.us-east-2.compute.amazonaws.com', username='', password='')
stdin, stdout, stderr = client.exec_command('ls')
for line in stdout:
    print('... ' + line.strip('\n'))
client.close()

还有,有没有更好的方法用python通过SSH连接到EC2?

最终,多亏了一位朋友,我找到了答案。虽然这是我犯的一个简单错误,但我要在这里提到它,因为很难追溯错误

这是因为我将
host=
作为
user@host
。如果有人需要,这里有一个工作代码。用户名通常是您与AWS一起使用的操作系统。e、 g.
ubuntu
用于ubuntu

import paramiko


hostname = "ec2-3-123-12-80.us-east-2.compute.amazonaws.com"  # Remote machine's public DNS
username = "ubuntu"  # Username for SSH                                     
pass_key = "amzonLinux16.pem"  # Your Private Key for AWS EC2

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
client.connect(hostname, username=username, key_filename=pass_key)
for command in 'echo "Hello, world!"', 'cat ~/test', 'uptime', 'ifconfig':
    stdin, stdout, stderr = client.exec_command(command)
    stdin.close()
    print(stdout.read().decode('utf-8'))
    stdout.close()
    stderr.close()
client.close()


你真正想要达到的最终结果是什么。为什么希望通过Python连接到EC2实例?SSH通常用于交互式会话。如果您详细解释您试图实现的目标,我们可能会推荐一种更好的方法(例如使用Systems Manager运行命令)。@JohnRotenstein谢谢!我解决了,看起来我犯了一个简单的错误。我试图通过SSH连接到远程计算机,这样我就可以启动一个进程,以便在后台继续运行项目。您不再手动从字符串生成RSAKey,因此这并不能解决我和其他来自google的人正在寻找的问题