Код: Выделить всё
import boto3
import paramiko
ec2 = boto3.Session(profile_name='profile name here', region_name='region name here').client('ec2')
target_instances = ec2.describe_instances(
Filters=[{'Name': 'tag:Name', 'Values': ['Instance Name Here']}]
)
ec2_instances = []
for each_instance in target_instances['Reservations']:
for found_instance in each_instance['Instances']:
ec2_instances.append(found_instance['PublicIpAddress'])
k = paramiko.RSAKey.from_private_key_file("path to id_rsa file here")
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect(hostname=ec2_instances[0], username="user name here", pkey=k, allow_agent=False, look_for_keys=False)
Теперь я убедился, что адрес publicip верен и что имя пользователя правильное. Имя пользователя такое же, которое я передаю в поле имени хоста putty: username@ipaddress.
Я все еще немного не совсем понимаю файл ключа, но думаю, что он у меня есть. работает правильно. Я создал файл ppk на aws и уже много лет использую его для получения доступа к серверу через putty. Передача его в paramiko не сработала, поэтому мне пришлось преобразовать его в тип openssh с помощью PuttyGen, чтобы создать файл id_rsa. Кажется, это рекомендуемый подход.
Поэтому, если не считать ошибочных входных данных, я все равно получаю эту ошибку. Затем я изучил свой экземпляр AWS EC2 и входящие правила его группы безопасности. Я разрешил соединения SSH и ICMP-IPv4. Я могу пропинговать сервер и получить ответ. Я пытался выяснить, нужен ли другой протокол, но с ssh-соединением я так не думал. Я в растерянности, куда смотреть дальше.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ramiko-ssh