Добавить пару ключей в существующий экземпляр EC2 - PullRequest
221 голосов
/ 16 июля 2010

Мне был предоставлен доступ к консоли AWS к учетной записи с двумя запущенными экземплярами, которую я не могу закрыть (в работе). Однако я хотел бы получить SSH-доступ к этим экземплярам. Можно ли создать новую пару ключей и применить ее к экземплярам, ​​чтобы я мог использовать SSH? Получить существующий файл pem для пары ключей, в которой были созданы экземпляры, в настоящее время не вариант.

Если это невозможно, могу ли я как-нибудь попасть в инстансы?

Ответы [ 8 ]

166 голосов
/ 17 июля 2010

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

Для восстановления, если это загрузочный AMI EBS, вы можете остановить его, сделать моментальный снимок тома.Создайте новый том на его основе.И сможете использовать его обратно для запуска старого экземпляра, создания нового образа или восстановления данных.

Хотя данные в эфемерном хранилище будут потеряны.


В связи с популярностью этого вопроса и ответа, я хотел собрать информацию в ссылке, на которой Родни разместилего комментарий.

Кредит предоставляется Эрику Хаммонду для этой информации .

Исправление файлов в корневом томе EBS экземпляра EC2

Вы можете просматривать и редактировать файлы на корневом томе EBS в экземпляре EC2, даже если вы находитесь в том, что вы считаете катастрофической ситуацией, такой как:

  • Вы потеряли свой ключ ssh или забыливаш пароль
  • Вы допустили ошибку при редактировании файла / etc / sudoers и больше не можете получить root-доступ с помощью sudo для его исправления
  • По какой-то причине ваш долго работающий экземпляр зависает, к нему нельзя связатьсяи не загружается должным образом
  • Вам необходимо восстановить файлы из экземпляра, но вы не можете получить к нему доступ

На физическом компьютере, сидящем за вашим столом, вы можете просто загрузить системус помощью компакт-диска или USB-накопителя установите жесткий диск, извлеките и исправьте файлы, затем перезагрузите компьютер, чтобы вернуться к работе.

Однако удаленный экземпляр EC2 кажется удаленным и недоступным, когда вы находитесь водна из этих ситуаций.К счастью, AWS предоставляет нам мощь и гибкость для возможности восстановления системы, подобной этой, при условии, что мы запускаем загрузочные экземпляры EBS, а не хранилище экземпляров.

Подход в EC2 несколько похож на физическийрешение, но мы собираемся переместить и смонтировать неисправный «жесткий диск» (корневой том EBS) в другой экземпляр, исправить его, а затем переместить обратно.

В некоторых ситуациях это может быть просто прощечтобы запустить новый экземпляр EC2 и выбросить плохой, но если вы действительно хотите исправить свои файлы, вот подход, который работал для многих:

Setup

Определите исходный экземпляр (A) и том, содержащий поврежденный корневой том EBS, с файлами, которые вы хотите просмотреть и отредактировать.

instance_a=i-XXXXXXXX

volume=$(ec2-describe-instances $instance_a |
  egrep '^BLOCKDEVICE./dev/sda1' | cut -f3)

Определите второй экземпляр EC2 (B), который вы будете использовать дляисправить файлы на оригинальном томе EBS.Этот экземпляр должен работать в той же зоне доступности, что и экземпляр A, чтобы к нему мог подключаться том EBS.Если экземпляр еще не запущен, запустите временный.

instance_b=i-YYYYYYYY

Остановите сломанный экземпляр A (ожидая, пока он полностью остановится), отсоедините корневой том EBS от экземпляра.(ожидая его отсоединения), затем подключите том к экземпляру B. на неиспользуемом устройстве.

ec2-stop-instances $instance_a
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_b --device /dev/sdj $volume

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

ssh ...instance b...

sudo mkdir -p 000 /vol-a
sudo mount /dev/sdj /vol-a

Исправьте это

На данный момент вся ваша корневая файловая система из экземпляра A доступна для просмотра и редактирования в / vol-a на экземпляре B. Например, выможет потребоваться:

  • Поместить правильные ключи ssh в /vol-a/home/ubuntu/.ssh/authorized_keys
  • Редактировать и исправить / vol-a / etc / sudoers
  • Поиск сообщений об ошибках в / vol-a / var / log / syslog
  • Копирование важных файлов из / vol-a /…

Примечание: UID в двух экземплярах может не совпадать, поэтому будьте осторожны, если вы создаете, редактируете или копируете файлы, принадлежащиенекорневые пользователи.Например, ваш пользователь mysql в экземпляре A может иметь тот же UID, что и пользователь postfix в экземпляре B, что может вызвать проблемы, если вы укажете файлы с одним именем, а затем переместите том обратно на A.

Завершение

После того, как вы закончите и будете довольны файлами в / vol-a, размонтируйте файловую систему (все еще на экземпляре B):

sudo umount /vol-a
sudo rmdir /vol-a

Теперь,вернитесь в свою систему с помощью ec2-api-tools, продолжайте перемещать том EBS обратно в его дом на исходном экземпляре A и запустите экземпляр снова:

ec2-detach-volume $volume
ec2-attach-volume --instance $instance_a --device /dev/sda1 $volume
ec2-start-instances $instance_a

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

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

Помните!Если ваш экземпляр B был временно запущен только для этого процесса, не забудьте прекратить его сейчас.

86 голосов
/ 08 апреля 2013

Хотя вы не можете напрямую добавить пару ключей к работающему экземпляру EC2, вы можете создать пользователя linux и создать для него новую пару ключей, а затем использовать его, как если бы вы использовали исходную пару ключей пользователя.

В вашем случае вы можете попросить владельца экземпляра (который его создал) сделать следующее.Таким образом, владелец экземпляра не должен делиться с вами своими собственными ключами, но вы все равно сможете использовать ssh в этих экземплярах.Эти шаги были первоначально опубликованы Utkarsh Sengar (aka. @ zengr ) на http://utkarshsengar.com/2011/01/manage-multiple-accounts-on-1-amazon-ec2-instance/. Я внес только несколько небольших изменений.

  1. Шаг 1: войдите в систему по умолчанию для пользователя «ubuntu» :

    $ ssh -i my_orig_key.pem ubuntu@111.111.11.111
    
  2. Шаг 2: создайте нового пользователя, мы назовем нашего нового пользователя «john»”:

    [ubuntu@ip-11-111-111-111 ~]$ sudo adduser john
    

    Установить пароль для« john »с помощью:

    [ubuntu@ip-11-111-111-111 ~]$ sudo su -
    [root@ip-11-111-111-111 ubuntu]# passwd john
    

    Добавить« john »в список sudoer с помощью:

    [root@ip-11-111-111-111 ubuntu]# visudo
    

    .и добавьте в конец файла следующее:

    john   ALL = (ALL)    ALL
    

    Хорошо!Мы создали нашего нового пользователя, теперь вам нужно сгенерировать файл ключа, который понадобится для входа в систему, как у нас в шаге 1 my_orin_key.pem.

    Теперь выйдите и вернитесь в ubuntu из-под root..

    [root@ip-11-111-111-111 ubuntu]# exit
    [ubuntu@ip-11-111-111-111 ~]$
    
  3. Шаг 3: создание открытого и закрытого ключей :

    [ubuntu@ip-11-111-111-111 ~]$ su john
    

    Введите пароль, который вы создали для «john»на шаге 2. Затем создайте пару ключей.Помните, что пароль для пары ключей должен содержать не менее 4 символов.

    [john@ip-11-111-111-111 ubuntu]$ cd /home/john/
    [john@ip-11-111-111-111 ~]$ ssh-keygen -b 1024 -f john -t dsa
    [john@ip-11-111-111-111 ~]$ mkdir .ssh
    [john@ip-11-111-111-111 ~]$ chmod 700 .ssh
    [john@ip-11-111-111-111 ~]$ cat john.pub > .ssh/authorized_keys
    [john@ip-11-111-111-111 ~]$ chmod 600 .ssh/authorized_keys
    [john@ip-11-111-111-111 ~]$ sudo chown john:ubuntu .ssh
    

    На предыдущем шаге john - это созданный нами пользователь, а ubuntu - группа пользователей по умолчанию.

    [john@ip-11-111-111-111 ~]$ sudo chown john:ubuntu .ssh/authorized_keys
    
  4. Шаг 4: теперь вам просто нужно скачать ключ «Джон» .Я использую scp для загрузки / выгрузки файлов из EC2, вот как вы можете это сделать.

    Вам все равно нужно будет скопировать файл, используя пользователя ubuntu , поскольку у вас есть только ключ дляэто имя пользователя.Итак, вам нужно будет переместить ключ в папку ubuntu и изменить его на 777.

    [john@ip-11-111-111-111 ~]$ sudo cp john /home/ubuntu/
    [john@ip-11-111-111-111 ~]$ sudo chmod 777 /home/ubuntu/john
    

    Теперь перейдите на терминал локальной машины, где у вас есть файл my_orig_key.pem, и сделайте следующее:

    $ cd ~/.ssh
    $ scp -i my_orig_key.pem ubuntu@111.111.11.111:/home/ubuntu/john john
    

    Приведенная выше команда скопирует ключ «john» в текущий рабочий каталог на вашем локальном компьютере.После того, как вы скопировали ключ на свой локальный компьютер, вы должны удалить «/ home / ubuntu / john», так как это закрытый ключ.

    Теперь один локальный компьютер chmod john на 600.

    $ chmod 600 john
    
  5. Шаг 5: время проверки ключа :

    $ ssh -i john john@111.111.11.111
    

Таким образом, вы можете настроитьнесколько пользователей могут использовать один экземпляр EC2 !!

11 голосов
/ 10 мая 2014

На локальном компьютере выполните команду:

ssh-keygen -t rsa -C "SomeAlias"

После выполнения этой команды будет создан файл, заканчивающийся * .pub.Скопируйте содержимое этого файла.

На машине Amazon отредактируйте ~ / .ssh / authorized_keys и вставьте содержимое файла * .pub (и сначала удалите любое существующее содержимое).

Затем вы можете использовать SSH, используя другой файл, созданный командой ssh-keygen (закрытый ключ).

7 голосов
/ 09 апреля 2013

Это случилось со мной ранее (у меня не было доступа к экземпляру EC2, который кто-то создал, но у него был доступ к веб-консоли AWS), и я написал в блоге ответ: http://readystate4.com/2013/04/09/aws-gaining-ssh-access-to-an-ec2-instance-you-lost-access-to/

По сути, вы можете отключитьEBS диск, подключите его к EC2, к которому у вас есть доступ.Добавьте ключ SSH для публикации в ~ec2-user/.ssh/authorized_keys на этом подключенном диске.Затем верните его на старый экземпляр EC2.Пошаговая ссылка в Amazon AMI.

Нет необходимости делать моментальные снимки или создавать новый клонированный экземпляр.

5 голосов
/ 21 декабря 2015

В моем случае я использовал эту документацию, чтобы связать пару ключей с моим экземпляром Elastic Beanstalk

Важно

Вы должны создать пару ключей Amazon EC2 и настроить свои экземпляры Amazon EC2, предоставляемые Elastic Beanstalk, на использование пары ключей Amazon EC2, прежде чем вы сможете получить доступ к экземплярам Amazon EC2, предоставляемым Elastic Beanstalk. Вы можете настроить пары ключей Amazon EC2 с помощью Консоли управления AWS. Инструкции по созданию пары ключей для Amazon EC2 см. В руководстве по началу работы с Amazon Elastic Compute Cloud.

Настройка экземпляров сервера Amazon EC2 с помощью Elastic Beanstalk

4 голосов
/ 28 апреля 2014

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

Просто вставьте ssh в вашу коробку EC2 с существующей парой ключей.Затем отредактируйте ~ / .ssh / authorized_keys и добавьте новый ключ в новой строке.Выходите и по ssh через новую машину.Успех!

4 голосов
/ 09 марта 2013

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

ssh-copy-id -i ~/.ssh/id_rsa.pub domain_alias

Вы можете настроить domain_alias в ~ / .ssh config

host domain_alias
  User ubuntu
  Hostname domain.com
  IdentityFile ~/.ssh/ec2.pem
3 голосов
/ 11 февраля 2013

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

/ stackoverflow.com вопросы / 7881469 / изменить ключ-пара-для-ec2 инстанции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...