Изменить пару ключей для экземпляра ec2

Как изменить пару ключей для моего экземпляра ec2 в консоли управления AWS? Я могу остановить экземпляр, я могу создать новую пару ключей, но я не вижу никакой ссылки для изменения пары ключей экземпляра.

24 ответа

Просто сделайте это: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

Вот что я сделал, благодаря сообщению Эрика Хаммонда в блоге:

  1. Остановите работающий экземпляр EC2
  2. Отсоединить его /dev/xvda1 громкость (назовем это громкостью А) - смотрите здесь
  3. Запустите новый экземпляр t1.micro EC2, используя мою новую пару ключей. Убедитесь, что вы создали его в той же подсети, в противном случае вам придется завершить экземпляр и создать его снова. - смотрите здесь
  4. Прикрепите том A к новому микроэкземпляру, как /dev/xvdf (или же /dev/sdf)
  5. SSH к новому микро экземпляру и монтируем том A к /mnt/tmp

    $ sudo mount /dev/xvdf1 /mnt/tmp

  6. копия ~/.ssh/authorized_keys в /mnt/tmp/home/ubuntu/.ssh/authorized_keys

  7. Выйти
  8. Завершить микро-экземпляр
  9. Отсоедините от него том A
  10. Присоедините том A к основному экземпляру как /dev/xvda
  11. Запустите основной экземпляр
  12. Войдите, как и прежде, используя свой новый .pem файл

Вот и все.

После запуска экземпляра невозможно изменить пару ключей, связанную с экземпляром, на уровне метаданных, но вы можете изменить ключ ssh, используемый для подключения к экземпляру.

В большинстве AMI есть процесс запуска, который загружает открытый ключ ssh и устанавливает его в файл.ssh / authorized_keys, чтобы вы могли войти в систему как пользователь, используя соответствующий закрытый ключ ssh.

Если вы хотите изменить ключ ssh, который вы используете для доступа к экземпляру, вам нужно отредактировать файл author_keys на самом экземпляре и преобразовать его в ваш новый открытый ключ ssh.

Файл author_keys находится в подкаталоге.ssh домашнего каталога пользователя, в который вы входите. В зависимости от того, какой AMI вы используете, он может находиться в одном из:

/home/ec2-user/.ssh/authorized_keys
/home/ubuntu/.ssh/authorized_keys
/root/.ssh/authorized_keys

После редактирования файла authorized_keys всегда используйте другой терминал, чтобы подтвердить, что вы можете подключиться к экземпляру ssh, прежде чем отключиться от сеанса, который вы используете для редактирования файла. Вы не хотите ошибиться и полностью заблокировать себя.

Пока вы думаете о парах ключей ssh ​​в EC2, я рекомендую загрузить свой собственный открытый ключ ssh в EC2 вместо того, чтобы Amazon сгенерировал пару ключей для вас.

Вот статья, которую я написал об этом:

Загрузка личных ключей SSH в Amazon EC2
http://alestic.com/2010/10/ec2-ssh-keys

Это относится только к новым экземплярам, ​​которые вы запускаете.

Запустите эту команду после загрузки вашего AWS Pem.

ssh-keygen -f YOURKEY.pem -y

Затем сбросьте вывод в authorized_keys,

Или скопируйте файл pem в свой экземпляр AWS и выполните следующие команды

chmod 600 YOURKEY.pem

а потом

ssh-keygen -f YOURKEY.pem -y >> ~/.ssh/authorized_keys

Инструкция от поддержки AWS EC2:

  1. Изменить логин pem
  2. перейдите на консоль EC2
  3. В разделе СЕТЬ И БЕЗОПАСНОСТЬ нажмите на пару ключей Нажмите на кнопку Создать пару ключей
  4. Дайте вашей новой паре ключей имя, сохраните файл.pem. Имя пары ключей будет использоваться для подключения к вашему экземпляру
  5. Создайте SSH-соединение с вашим экземпляром и оставьте его открытым
  6. в PuttyGen, нажмите "Загрузить", чтобы загрузить ваш.pem файл
  7. Держите флажок SSH-2 RSA установленным. Нажмите "Сохранить закрытый ключ". Появится всплывающее окно с предупреждением, нажмите "Да".
  8. нажмите "Сохранить открытый ключ", чтобы сгенерировать открытый ключ. Это открытый ключ, который мы собираемся скопировать в ваш текущий экземпляр
  9. Сохраните открытый ключ с новым именем пары ключей и с расширением.pub
  10. Откройте содержимое открытого ключа в блокноте
  11. скопируйте содержимое ниже "Комментарий: " импортированный-openssh-ключ "и перед"---- КОНЕЦ ОБЩЕСТВЕННОГО КЛЮЧА SSH2 ----
    Примечание - вам нужно скопировать содержимое одной строкой - удалить все новые строки
  12. в подключенном экземпляре откройте ваш файл author_keys, используя инструмент vi. Запустите следующую команду: vi .ssh/authorized_keys вы также должны увидеть оригинальный открытый ключ в файле
  13. переместите курсор на файл до конца первого содержимого открытого ключа: введите "i" для вставки
  14. в новой строке введите "ssh-rsa" и добавьте пробел перед вставкой содержимого открытого ключа, пробела и имени файла.pem (без.pem). Примечание - вы должны получить строку с тот же формат, что и в предыдущей строке
  15. нажмите клавишу Esc и введите:wq!

это сохранит обновленный файл author_keys

попробуйте открыть новый сеанс SSH для вашего экземпляра, используя новый ключ pai

Когда вы подтвердите, что можете использовать SSH в экземпляре, используя новую пару ключей, вы можете vi.ssh / авторизованный_ключ и удалить старый ключ.

Ответ на замечание Шегги:

Если вы не можете подключиться к экземпляру (например, ключ поврежден), используйте консоль AWS для отключения тома ( http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume.html) и подключите его к рабочему экземпляру, затем измените ключ на томе и снова подключите его к предыдущему экземпляру.

Я заметил, что при управлении Elastic Beanstalk вы можете изменить активную пару ключей EC2. В разделе Elastic Beanstalk > Конфигурация> Безопасность выберите новый ключ из раскрывающегося списка ключей EC2. Вы увидите это сообщение с вопросом, уверены ли вы:

EC2KeyName: изменения в настройках параметра EC2KeyName не вступят в силу немедленно. Каждый из ваших существующих экземпляров EC2 будет заменен, и ваши новые настройки вступят в силу.

Мой экземпляр уже был прекращен, когда я это сделал. Затем оно началось, завершилось и началось снова. Очевидно, "замена" означает завершение и создание нового экземпляра. Если вы изменили свой загрузочный том, сначала создайте AMI, а затем укажите этот AMI в той же форме Elastic Beanstalk > Конфигурация> Экземпляры, что и пользовательский идентификатор AMI. Это также предупреждает о замене экземпляров EC2.

После изменения пары ключей EC2 и пользовательского идентификатора AMI, а также после появления предупреждений о них нажмите кнопку " Сохранить", чтобы продолжить.

Помните, что IP-адрес изменяется при повторном создании экземпляра, поэтому вам нужно получить новый IP-адрес с консоли EC2, чтобы использовать его при подключении через SSH.

Я прошел этот подход и через некоторое время смог заставить его работать. Отсутствие реальных команд усложнило ситуацию, но я понял это. ОДНАКО - гораздо более простой подход был найден и протестирован вскоре после:

  1. Сохраните свой экземпляр как AMI (перезагрузите или нет, я предлагаю перезагрузить компьютер). Это будет работать только в случае поддержки EBS.
  2. Затем просто запустите экземпляр из этого AMI и назначьте свой новый ключевой файл.
  3. Переместите свой эластичный IP (если применимо) на новый экземпляр, и все готово.
  • Создайте новый ключ, например, с помощью генератора ключей PuTTY
  • Остановить экземпляр
  • Установить пользовательские данные экземпляра для отправки открытого ключа на сервер
  • Запуск экземпляра

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

#cloud-config
bootcmd:
 - echo 'ssh-rsa AAAAB3Nz...' > /root/.ssh/authorized_keys

В этом вопросе задаются два сценария:-

1) У вас нет доступа к файлу.pem, поэтому вы хотите создать новый.

2) У вас есть.pem доступ к файлу с вами, но вы просто хотите изменить или создать новый файл.pem для некоторых уязвимостей или в целях безопасности.

Так что, если вы потеряли ключи, прокрутите страницу вверх и посмотрите другие ответы. Но если вы просто измените свой файл.pem в целях безопасности, выполните следующие действия: -

1) Перейдите в консоль AWS и создайте новый файл.pem из раздела пар ключей. Он автоматически загрузит файл.pem на ваш компьютер.

2) измените разрешение на 400, если вы используете Linux/ubuntu, нажмите следующую команду

chmod 400 yournewfile.pem

3) Создайте RSA для недавно загруженного файла на вашем локальном компьютере.

ssh-keygen -f yournewfile.pem -y

4) Скопируйте код RSA отсюда

5) Теперь подключитесь к вашему экземпляру по SSH через предыдущий файл.pem.

ssh -i oldpemfileName.pem username@ipaddress

sudo vim  ~/.ssh/authorized_keys

6) Оставьте одну-две строки и вставьте сюда скопированный RSA нового файла, а затем сохраните файл.

7) Теперь ваш новый файл.pem связан с запущенным экземпляром

8) Если вы хотите отключить доступ к предыдущему файлу.pem, просто отредактируйте

sudo vim ~/.ssh/authorized_keys

файл и удалите или измените предыдущий RSA отсюда.

Примечание. - Удалите осторожно, чтобы вновь созданный RSA не изменился.

Таким образом, вы можете изменить / подключить новый файл.pem к вашему работающему экземпляру.

Вы можете отозвать доступ к ранее сгенерированному файлу.pem из соображений безопасности.

Надеюсь, это поможет!

Я считаю, что самый простой подход заключается в:

  1. Создайте AMI-изображение оригинальной копии.
  2. Запустите новый экземпляр EC2, используя образ AMI (из шага 1) с новой парой ключей.
  3. Войдите в новый экземпляр EC2 с новым ключом.

Модификация ответа от "yegor256". Если следовать приведенным ниже шагам, это сэкономит много времени и не нужно будет останавливать работающий экземпляр.

  1. Запустите новый экземпляр t1.micro EC2, используя новую пару ключей. Убедитесь, что вы создали его в той же подсети, в противном случае вам придется завершить экземпляр и создать его снова.
  2. SSH к новому экземпляру micro и скопируйте содержимое ~/.ssh/authorized_keys где-нибудь на вашем компьютере.
  3. Войдите в основной экземпляр со старым ключом ssh.
  4. Скопируйте и замените содержимое файла из пункта 2 в ~/.ssh/authorized_keys
  5. Теперь вы можете войти снова только с новым ключом. Старый ключ больше не будет работать.

Вот и все. Наслаждайтесь :)

Если вы используете платформу ElasticBeanstalk, вы можете изменить ключи, выполнив:

  • Эластичная панель Beanstalk
  • конфигурация
  • Экземпляры (в правом верхнем углу)
  • Пара ключей EC2

Это прервет текущий экземпляр и создаст новый с выбранными ключами / настройками.

Самое простое решение - скопировать содержимое

~/.ssh/id_rsa.pub

в авторизованные ключи вашего экземпляра AWS в

~/.ssh/authorized_keys

Это позволит вам войти в экземпляр EC2 без указания файла pem для команды ssh. Вы можете удалить все остальные ключи, как только вы проверили подключение к нему.

Если вам нужно создать новый ключ, чтобы поделиться им с кем-то еще, вы можете сделать это с помощью:

ssh-keygen -t rsa

который создаст файл private key.pem, и вы можете получить его с помощью:

ssh-keygen -f private_key.pem -y > public_key.pub

Любой, у кого есть private_key.pem, сможет связаться с

ssh user@host.com -i private_key.pem

Вам не нужно вращать корневое устройство и изменять открытый ключ SSH в authorized_keys, Для этого можно использовать userdata для добавления ваших ключей ssh ​​к любому экземпляру. Для этого сначала вам нужно создать новую KeyPair с помощью консоли AWS или с помощью ssh-keygen.

ssh-keygen -f YOURKEY.pem -y

Это создаст открытый ключ для вашей новой SSH KeyPair, скопируйте этот открытый ключ и используйте его в приведенном ниже сценарии.

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6xigPPA/BAjDPJFflqNuJt5QY5IBeBwkVoow/uBJ8Rorke/GT4KMHJ3Ap2HjsvjYrkQaKANFDfqrizCmb5PfAovUjojvU1M8jYcjkwPG6hIcAXrD5yXdNcZkE7hGK4qf2BRY57E3s25Ay3zKjvdMaTplbJ4yfM0UAccmhKw/SmH0osFhkvQp/wVDzo0PyLErnuLQ5UoMAIYI6TUpOjmTOX9OI/k/zUHOKjHNJ1cFBdpnLTLdsUbvIJbmJ6oxjSrOSTuc5mk7M8HHOJQ9JITGb5LvJgJ9Bcd8gayTXo58BukbkwAX7WsqCmac4OXMNoMOpZ1Cj6BVOOjhluOgYZbLr" >> /home/hardeep/.ssh/authorized_keys
--//

После перезагрузки машина будет иметь указанный ключ публикации SSH. Удалите userdata после первого перезапуска. Узнайте больше о пользовательских данных при запуске.

Спасибо за советы ребята. Обязательно буду иметь в виду, когда мне нужно дать отдых парам ключей. Однако в интересах эффективности и лени я придумал кое-что еще:

  1. Создайте новую пару ключей и загрузите учетные данные
  2. Щелкните правой кнопкой мыши свой экземпляр> Создать AMI Как только это будет сделано
  3. завершите свой экземпляр (или просто остановите его, пока не убедитесь, что можете создать еще один из вашего нового блестящего AMI)
  4. Запустите новый экземпляр EC2 из только что созданного AMI и укажите новую пару ключей, созданную на шаге (1) выше.

Надеюсь, это может быть полезно для вас и сэкономит ваше время, а также минимизирует количество белых волос, которые вы получаете от таких вещей:)

Я попробовал ниже шаги, и это работало без остановки экземпляра. Мое требование было - поскольку я изменил свой клиентский компьютер, старый файл.pem не позволял мне войти в экземпляр ec2.

  1. Войдите в экземпляр ec2, используя старый файл.pem со старого компьютера. Откройте ~/.ssh/authorized_keys

Вы увидите ваши старые ключи в этом файле.

  1. ssh-keygen -f YOUR_PEM_FILE.pem -y Будет сгенерирован ключ. Добавьте ключ к ~/.ssh/authorized_keys, открытому на шаге #1. Нет необходимости удалять старый ключ.

  2. С консоли AWS создайте новую пару ключей. Сохраните это в своей новой машине. Переименуйте его в старый файл pem - причина в том, что старый файл pem все еще связан с экземпляром ec2 в AWS.

Все сделано.

Я могу войти в AWS ec2 с моей новой клиентской машины.

У вас есть несколько вариантов замены ключа вашего экземпляра EC2.

  1. Вы можете заменить ключ вручную в файле.ssh/authorized_keys. Однако для этого требуется, чтобы у вас был доступ к экземпляру или тому, если он не зашифрован.
  2. Вы можете использовать AWS Systems Manager. Это требует наличия установленного агента.

Поскольку первый вариант можно легко найти в ответах или в выбранной вами поисковой системе, я хочу сосредоточиться на диспетчере систем.

  1. Откройте Сервис Systems Manager
  2. Нажмите на Automation с левой стороны.
  3. Нажмите на Execute Automation
  4. Выбрать AWSSupport-TroubleshootSSH (обычно это на последней странице)

Вы можете найти больше информации в Официальной Документации AWS

Это для тех, у кого есть два разных файла pem и для каких-либо целей безопасности нужно отказаться от одного из двух . Допустим, мы хотим отказаться от 1.pem

  1. Подключитесь к серверу 2 и скопируйте ключ ssh из ~ / .ssh / authorized_keys
  2. Подключитесь к серверу 1 в другом терминале и вставьте ключ в ~ / .ssh / authorized_keys. Теперь у вас будет два открытых ключа ssh.
  3. Теперь, для вашей уверенности, попробуйте подключиться к серверу 1 с помощью 2.pem. Вы сможете подключить сервер 1 как с 1.pem, так и с 2.pem.
  4. Теперь закомментируйте 1.pem ssh и подключитесь с помощью ssh -i 2.pem user @ server1

Что ты можешь сделать...

  1. Создайте новый профиль / роль экземпляра, к которому прикреплена политика AmazonEC2RoleForSSM.

  2. Прикрепите этот профиль экземпляра к экземпляру.

  3. Используйте SSM Session Manager для входа в экземпляр.
  4. Используйте кейген на вашем локальном компьютере, чтобы создать пару ключей.
  5. Отправьте открытую часть этого ключа в экземпляр, используя сеанс SSM.
  6. Прибыль.

Если кто-то находится здесь, потому что не может получить доступ к экземпляру EC2, потому что у него нет пары ключей, но у него есть доступ к IAM, вы можете запустить следующую команду, чтобы разрешить временный доступ (60 секунд) к вашему экземпляру EC2 с помощью ключа у вас уже есть, если вы знаете имя пользователя (обычно это «ubuntu» для экземпляров ubuntu или «ec2-user» для экземпляров amazon linux):

      aws ec2-instance-connect send-ssh-public-key --region ${your-aws-region} --instance-id ${your-instance-id} --availability-zone ${your-instance-az} --instance-os-user ${username} --ssh-public-key file://path/to/public/key 

(Если у вас есть несколько профилей учетных данных в вашем файле ~/.aws/credentials, вы можете указать, также добавив флаг «--profile your-profile» к этой команде)

В случае успеха вывод будет выглядеть примерно так:

      {
"RequestId": "3537268d-c161-41bb-a4ac-977b79b2bdc0",
"Success": true
}

Затем у вас есть 60 секунд, чтобы использовать этот ключ по ssh.

Ответ Yegor256 сработал для меня, но я подумал, что просто добавлю несколько комментариев, чтобы помочь тем, кто не так хорош в установке дисков (как я!):

Amazon дает вам выбор того, что вы хотите назвать томом, когда вы присоединяете его. Вы должны использовать имя в диапазоне от /dev/sda - /dev/sdp. Более новые версии Ubuntu переименуют то, что вы там поместили, в /dev/xvd(x) или что-то в этом роде.

Поэтому я выбрал / dev / sdp в качестве имени для подключения в AWS, затем вошел на сервер и обнаружил, что Ubuntu переименовал мой том в /dev/xvdp1). Затем мне пришлось смонтировать диск - для меня я должен был сделать это так:

mount -t ext4 xvdp1 /mnt/tmp

Пройдя через все эти обручи, я смог получить доступ к своим файлам в / mnt / tmp

Моя проблема была, я пытался с IP а не публичный DNS, Тогда я попробовал с public DNS и это решено

Если вы не можете войти в виртуальную машину и удалили ключи ssh, а также можете изменить пару ключей вашего ec2, выполнив следующие шаги. Шаг за шагом 1) остановите свой экземпляр ec2. 2) сделать снимок виртуальной машины и хранилища. 3) при создании создайте новую виртуальную машину, выберите свой снимок и создайте виртуальную машину из своего снимка. 4) при создании ВМ загружает вашу пару ключей. 5) Как только ваша виртуальная машина UP UP, вы можете ssh с новой парой ключей, и ваши данные также вернутся.

Альтернативное решение. Если у вас есть единственный доступ на server. В этом случае не удаляйте файл pem из консоли AWS. Просто удалите ключ доступа pem из sudo nano ~/.ssh/authroized_keysи добавьте публичный ssh-ключ вашей системы. Теперь у вас есть доступ ssh user@i.p

Это будет работать, только если у вас есть доступ к экземпляру, в котором вы хотите изменить / добавить ключ. Вы можете создать новую пару ключей. Или, если у вас уже есть пара ключей, вы можете вставить открытый ключ новой пары в файл author_keys на вашем экземпляре.

vim.ssh / authorized_keys

Теперь вы можете использовать закрытый ключ для этой пары и войти в систему.

Надеюсь это поможет.

Другие вопросы по тегам