У меня запущен экземпляр amazon ec2 linux, связанный с парой ключей (p1), и я загрузил закрытый ключ на свой домашний рабочий стол. Сейчас на работе я создал пару ключей (p2) на рабочем столе и импортировал открытый ключ в Amazon через консоль AWS.
Дома я хочу добавить открытый ключ пары ключей p2, который будет добавлен к authorized_keys
моему экземпляру AMI (доступ к которому я могу получить только из дома). Однако я забыл взять с собой открытый ключ p2, поэтому можно ли каким-то образом экспортировать этот открытый ключ из Amazon.
Правильная команда ssh-keygen однако:
источник
chmod 400 your_private_key.pem
если вы получаете сообщение «Ошибка разрешения слишком открыта»Я уже предоставил один ответ, который использует тома EBS для получения открытого ключа ssh, но вот еще один способ получить его, запустив временный экземпляр EC2 с помощью скрипта пользовательских данных, который отправляет открытый ключ на вывод консоли. Вот шаги:
Сохраните следующий код в файл с именем
output-ssh-key.userdata
на вашем локальном компьютере. НЕ ЗАПУСКАЙТЕ ЭТИ КОМАНДЫ МЕСТНО!Запустите стандартный экземпляр Ubuntu 10.04 LTS с указанным выше файлом в качестве сценария пользовательских данных. Укажите пару ключей, для которой вы хотите получить открытый ключ ssh:
Продолжайте запрашивать вывод консоли из экземпляра, пока он не покажет ваш открытый ключ ssh. Укажите идентификатор экземпляра, возвращенный из команды run-instances:
В течение 2-10 минут вы получите такой результат:
Временный экземпляр автоматически прекратит работу через час, но вы можете прекратить его самостоятельно, если хотите убедиться, что с вас не взимается плата, превышающая два цента, которые это будет стоить.
источник
Если у вас есть закрытый ключ SSH, вы можете заново сгенерировать компонент открытого ключа, просто выполнив следующую команду ssh-keygen :
Это простая часть ... Консоль и API AWS не поддерживают нажатие двух пар ключей при запуске экземпляра EC2. Это упражнение, оставленное системному администратору для выполнения другими способами.
Если у вас есть доступ к авторизованному ключу идентификации, вы можете просто выполнить следующую команду ssh-copy-id :
Это автоматически скопирует данный открытый ключ на сервер и в
~user/.ssh/authorized_keys
файл для вас и обеспечит надлежащие разрешения для файла.Более элегантный способ - включить дополнительные идентификационные ключи в процессы управления конфигурацией. В моем случае это влечет за собой добавление дополнительных ключей к конфигурации Puppet для узла.
Как примечание, личные предпочтения, но будут использовать лучший метод управления ключами SSH, чем просто включать отдельные ключи для работы и дома. Как я уже упоминал в предыдущем вопросе, мои ключи хранятся на USB-накопителе, а не на любом используемом мной компьютере.
источник
Другой вариант - добавить в user_data короткий скрипт, который просто добавляет еще один ключ ssh в root:
После этого вы можете войти в систему как пользователь root
ssh -l root -i <KEYFILE> URL
и просто прочитать ключ из authorized_keys пользователя ec2_user, ubuntu или как бы он ни назывался.Единственное - вам нужно сделать машину общедоступной и убедиться, что доступ к порту 22 возможен снаружи.
источник