Изменить пару ключей для экземпляра ec2
Как изменить пару ключей для моего экземпляра ec2 в консоли управления AWS? Я могу остановить экземпляр, я могу создать новую пару ключей, но я не вижу никакой ссылки для изменения пары ключей экземпляра.
24 ответа
Просто сделайте это: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html
Вот что я сделал, благодаря сообщению Эрика Хаммонда в блоге:
- Остановите работающий экземпляр EC2
- Отсоединить его
/dev/xvda1
громкость (назовем это громкостью А) - смотрите здесь - Запустите новый экземпляр t1.micro EC2, используя мою новую пару ключей. Убедитесь, что вы создали его в той же подсети, в противном случае вам придется завершить экземпляр и создать его снова. - смотрите здесь
- Прикрепите том A к новому микроэкземпляру, как
/dev/xvdf
(или же/dev/sdf
) SSH к новому микро экземпляру и монтируем том A к
/mnt/tmp
$ sudo mount /dev/xvdf1 /mnt/tmp
копия
~/.ssh/authorized_keys
в/mnt/tmp/home/ubuntu/.ssh/authorized_keys
- Выйти
- Завершить микро-экземпляр
- Отсоедините от него том A
- Присоедините том A к основному экземпляру как
/dev/xvda
- Запустите основной экземпляр
- Войдите, как и прежде, используя свой новый
.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:
- Изменить логин pem
- перейдите на консоль EC2
- В разделе СЕТЬ И БЕЗОПАСНОСТЬ нажмите на пару ключей Нажмите на кнопку Создать пару ключей
- Дайте вашей новой паре ключей имя, сохраните файл.pem. Имя пары ключей будет использоваться для подключения к вашему экземпляру
- Создайте SSH-соединение с вашим экземпляром и оставьте его открытым
- в PuttyGen, нажмите "Загрузить", чтобы загрузить ваш.pem файл
- Держите флажок SSH-2 RSA установленным. Нажмите "Сохранить закрытый ключ". Появится всплывающее окно с предупреждением, нажмите "Да".
- нажмите "Сохранить открытый ключ", чтобы сгенерировать открытый ключ. Это открытый ключ, который мы собираемся скопировать в ваш текущий экземпляр
- Сохраните открытый ключ с новым именем пары ключей и с расширением.pub
- Откройте содержимое открытого ключа в блокноте
- скопируйте содержимое ниже "Комментарий: " импортированный-openssh-ключ "и перед"---- КОНЕЦ ОБЩЕСТВЕННОГО КЛЮЧА SSH2 ----
Примечание - вам нужно скопировать содержимое одной строкой - удалить все новые строки - в подключенном экземпляре откройте ваш файл author_keys, используя инструмент vi. Запустите следующую команду: vi .ssh/authorized_keys вы также должны увидеть оригинальный открытый ключ в файле
- переместите курсор на файл до конца первого содержимого открытого ключа: введите "i" для вставки
- в новой строке введите "ssh-rsa" и добавьте пробел перед вставкой содержимого открытого ключа, пробела и имени файла.pem (без.pem). Примечание - вы должны получить строку с тот же формат, что и в предыдущей строке
- нажмите клавишу 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.
Я прошел этот подход и через некоторое время смог заставить его работать. Отсутствие реальных команд усложнило ситуацию, но я понял это. ОДНАКО - гораздо более простой подход был найден и протестирован вскоре после:
- Сохраните свой экземпляр как AMI (перезагрузите или нет, я предлагаю перезагрузить компьютер). Это будет работать только в случае поддержки EBS.
- Затем просто запустите экземпляр из этого AMI и назначьте свой новый ключевой файл.
- Переместите свой эластичный 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 из соображений безопасности.
Надеюсь, это поможет!
Я считаю, что самый простой подход заключается в:
- Создайте AMI-изображение оригинальной копии.
- Запустите новый экземпляр EC2, используя образ AMI (из шага 1) с новой парой ключей.
- Войдите в новый экземпляр EC2 с новым ключом.
Модификация ответа от "yegor256". Если следовать приведенным ниже шагам, это сэкономит много времени и не нужно будет останавливать работающий экземпляр.
- Запустите новый экземпляр t1.micro EC2, используя новую пару ключей. Убедитесь, что вы создали его в той же подсети, в противном случае вам придется завершить экземпляр и создать его снова.
- SSH к новому экземпляру micro и скопируйте содержимое ~/.ssh/authorized_keys где-нибудь на вашем компьютере.
- Войдите в основной экземпляр со старым ключом ssh.
- Скопируйте и замените содержимое файла из пункта 2 в ~/.ssh/authorized_keys
- Теперь вы можете войти снова только с новым ключом. Старый ключ больше не будет работать.
Вот и все. Наслаждайтесь :)
Если вы используете платформу 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 после первого перезапуска. Узнайте больше о пользовательских данных при запуске.
Спасибо за советы ребята. Обязательно буду иметь в виду, когда мне нужно дать отдых парам ключей. Однако в интересах эффективности и лени я придумал кое-что еще:
- Создайте новую пару ключей и загрузите учетные данные
- Щелкните правой кнопкой мыши свой экземпляр> Создать AMI Как только это будет сделано
- завершите свой экземпляр (или просто остановите его, пока не убедитесь, что можете создать еще один из вашего нового блестящего AMI)
- Запустите новый экземпляр EC2 из только что созданного AMI и укажите новую пару ключей, созданную на шаге (1) выше.
Надеюсь, это может быть полезно для вас и сэкономит ваше время, а также минимизирует количество белых волос, которые вы получаете от таких вещей:)
Я попробовал ниже шаги, и это работало без остановки экземпляра. Мое требование было - поскольку я изменил свой клиентский компьютер, старый файл.pem не позволял мне войти в экземпляр ec2.
- Войдите в экземпляр ec2, используя старый файл.pem со старого компьютера. Откройте ~/.ssh/authorized_keys
Вы увидите ваши старые ключи в этом файле.
ssh-keygen -f YOUR_PEM_FILE.pem -y Будет сгенерирован ключ. Добавьте ключ к ~/.ssh/authorized_keys, открытому на шаге #1. Нет необходимости удалять старый ключ.
С консоли AWS создайте новую пару ключей. Сохраните это в своей новой машине. Переименуйте его в старый файл pem - причина в том, что старый файл pem все еще связан с экземпляром ec2 в AWS.
Все сделано.
Я могу войти в AWS ec2 с моей новой клиентской машины.
У вас есть несколько вариантов замены ключа вашего экземпляра EC2.
- Вы можете заменить ключ вручную в файле.ssh/authorized_keys. Однако для этого требуется, чтобы у вас был доступ к экземпляру или тому, если он не зашифрован.
- Вы можете использовать AWS Systems Manager. Это требует наличия установленного агента.
Поскольку первый вариант можно легко найти в ответах или в выбранной вами поисковой системе, я хочу сосредоточиться на диспетчере систем.
- Откройте Сервис
Systems Manager
- Нажмите на
Automation
с левой стороны. - Нажмите на
Execute Automation
- Выбрать
AWSSupport-TroubleshootSSH
(обычно это на последней странице)
Вы можете найти больше информации в Официальной Документации AWS
Это для тех, у кого есть два разных файла pem и для каких-либо целей безопасности нужно отказаться от одного из двух . Допустим, мы хотим отказаться от 1.pem
- Подключитесь к серверу 2 и скопируйте ключ ssh из ~ / .ssh / authorized_keys
- Подключитесь к серверу 1 в другом терминале и вставьте ключ в ~ / .ssh / authorized_keys. Теперь у вас будет два открытых ключа ssh.
- Теперь, для вашей уверенности, попробуйте подключиться к серверу 1 с помощью 2.pem. Вы сможете подключить сервер 1 как с 1.pem, так и с 2.pem.
- Теперь закомментируйте 1.pem ssh и подключитесь с помощью ssh -i 2.pem user @ server1
Что ты можешь сделать...
Создайте новый профиль / роль экземпляра, к которому прикреплена политика AmazonEC2RoleForSSM.
Прикрепите этот профиль экземпляра к экземпляру.
- Используйте SSM Session Manager для входа в экземпляр.
- Используйте кейген на вашем локальном компьютере, чтобы создать пару ключей.
- Отправьте открытую часть этого ключа в экземпляр, используя сеанс SSM.
- Прибыль.
Если кто-то находится здесь, потому что не может получить доступ к экземпляру 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
Теперь вы можете использовать закрытый ключ для этой пары и войти в систему.
Надеюсь это поможет.