Проблема RSAkey с Paramiko и AWS EC2 - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь войти на удаленный компьютер (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()

А также, есть ли лучший путь к S SH к EC2 с python?

1 Ответ

0 голосов
/ 18 апреля 2020

В конце концов, я узнал ответ благодаря другу. Несмотря на то, что я допустил простую ошибку, я упомяну об этом здесь, поскольку отследить ошибку сложно.

Это потому, что я дал host= как user@host. Вот рабочий код, если кому-то это нужно. И имя пользователя - это обычно ОС, которую вы используете с AWS. например, 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()

...