it-swarm.com.ru

В разрешении Amazon EC2 отказано (publickey)

Кажется, это общая проблема, но мой конкретный случай кажется немного другим.

Я настроил новый экземпляр Amazon EC2, используя инструменты командной строки и подключившись через SSH, и выполнил некоторые настройки. 

Однако сначала я не мог подключиться к экземпляру по ssh, мне пришлось остановить и перезапустить экземпляр, затем я смог подключиться. Перед перезапуском я только что получил ответ.

Permission denied (publickey).

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

Permission denied (publickey).

Я попытался перезагрузить экземпляр без радости.

Кто-нибудь может указать мне правильное направление здесь? Та же самая команда, которая работала прошлой ночью, больше не работает, я подключаюсь с моего Macbook Pro.

72
Trevor

Я собираюсь ответить на свой вопрос, если кто-нибудь еще увидит то же самое ... Прошлой ночью я сделал:

ssh-add ~/.ssh/[keypair name]

затем был связан с:

ssh [email protected][ec2 instance ip]

Этим утром я попробовал то же самое и не мог соединиться. Но делать

ssh -i ~/.ssh/[keypair name] [email protected][ec2 instance ip]

получает меня.

Использование ssh-add в паре ключей снова возвращает меня. Я предполагаю, что ssh-add работает только в той оболочке, в которой я его выпустил. Когда я закрывал окно терминала и открывал другое, у меня больше не было этой пары ключей без явного указания.

75
Trevor

Это происходило для меня, потому что я не использовал правильное имя пользователя. Я смог войти в систему при использовании AMI, использованного в учебнике, за которым я следовал, но когда я попытался использовать другой AMI (ubuntu + LAMP from Bitnami), я получил ошибку Permission denied (public key).. Наконец я понял, что если я изменю имя пользователя для учебного AMI с ubuntu на ec2-user, я получу ту же ошибку. 

Таким образом, быстрый Google говорит, что имя пользователя для AMI Битнами является bitnami. Задача решена. 

28
RyanM

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

$ Sudo меньше/var/log/secure

который содержал:

Dec  9 05:58:20 ... sshd[29816]: Authentication refused: 
    bad ownership or modes for directory /home/ec2-user

Это было исправлено с помощью команды:

$ chmod og-rwx/home/ec2-user

Я надеюсь, что это поможет кому-то еще.

14
Bryan Rink

Обратите внимание, что после перезапуска экземпляра имя DNS изменилось. Я влюбился в это несколько раз. Ключевой файл все еще действовал, но «имя сервера» изменилось.

12
Postal

Спасибо!

Я действительно ценю ответ @ Тревора здесь. Я собираюсь добавить этот маленький трюк, который я сейчас использую, чтобы избежать этой проблемы в будущем.

Удобство

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

ssh ec2-52-10-20-30.us-west-2.compute.amazonaws.com

Это полный публичный DNS сервера в зоне доступности US West 2. Правильное имя пользователя и ключ выбраны из-за этого:

## ~/.ssh/config

Host *.us-west-2.compute.amazonaws.com
    User ec2-user
    IdentityFile ~/.ssh/bruno-bronosky-aws-us-west-2.pem
3
Bruno Bronosky

Если EC2 экземпляр использует Ubuntu AMI 14.04. Попробуйте добавить 'ubuntu @' перед ip экземпляра EC2.

ssh -i [key name] [email protected][EC2 instance ip]
2
TYMG

Убедитесь, что путь к вашему личному ключу указан правильно.

Если ваш ssh-клиент не может найти закрытый ключ, который вы пытаетесь предоставить, как ни странно, он не выдаст вам ошибку! он просто не будет использовать этот ключ. Он будет использовать любой ключ, который у вас есть под .ssh/id_dsa и .ssh/id_ecdsa, что, конечно, приведет к слабой аутентификации открытого ключа.

1
Seeker

Я также получил: В доступе отказано.

Я использовал :

ssh -v -i ~/.ssh/pemfile [email protected]

и ответ был: 

debug1: No more authentication methods to try.

Введите команду: 

ssh-add -l

Но ответ был пуст

Итак, я думаю, что в файле пера что-то не так с форматом Затем я нашел файл пера, загруженный из сети ec2, и переместил его. Перед этим я создал новый файл и проанализировал текст из загруженного файла pem в каталог ".ssh", а затем:

ssh-add filename

Который был успешным.

0
Alex Yao

Я решил это, скопировав содержимое ~/.ssh/id_rsa.pub в ~/.ssh/authorized_keys на экземпляре EC2.

Это указано в документации: http://docs.aws.Amazon.com/opsworks/latest/userguide/security-ssh-access.html

Тогда я мог бы ssh с помощью этой команды:

ssh [email protected][ip.address]
0
ChrisJF

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

Вот как «Отказано в доступе (publickey)» произошло со мной:
1. Следуйте учебнику, выберите us-east-1 в качестве зоны по умолчанию
2. Создать ключевое имя "mykey"
3. Изучение мира AWS с помощью следующих примеров в этой книге. 
4. Однажды попробуйте проверить скорости в зоне Сиднея, по умолчанию переключитесь в зону Сиднея.
5. Создайте другой ключ, назвав его «mykey», не задумываясь, но не используйте его для подключения через cli в течение пары дней.
6. Попробуйте подключиться к AWS, используя cli.
7. Получил "Отказано в доступе (publickey)".
8. Потратил много часов на отладку проблемы ssh, пока не заметил проблему с ключом/зоной.

Надеюсь, это поможет новичку, как я.

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

0
FrankCJ

Подключение к EC2 из cli немного сложнее, по крайней мере, в первый раз. Если вы идете к `

Службы -> Вычислить -> EC2 -> Запуск экземпляров> и выберите экземпляр, который вы хотите ssh -> connect

`тогда вы увидите диалоговое окно, описывающее, как к нему подключиться. Часть этого показана ниже. 

 enter image description here

Если вы используете номер 4 без предшествующего ему [email protected], вы получите 

Permission denied (publickey).

Просто скопируйте и вставьте тот, который указан ниже в `Пример :.

0
tadtab

Я изменил разрешения на 600, хотя разрешения для файла pem были уже 644. И это сработало: надеюсь, это поможет

0
gaurav arora

Если бы у вас была такая же проблема, вот что вы должны сделать .. Прежде всего, если у вас Windows, используйте командную строку Babun, которая похожа на Linux .. Как только вы получите эту командную строку, откройте ее и введите ssh-i [key pair path] [username]@[EC2 public IP].Чтобы найти путь для пары ключей, перейдите к файлу, в котором хранится ваш ключ, удерживайте клавишу Shift и щелкните правой кнопкой мыши и нажмите «Копировать путь» и вставьте его туда, куда идет путь в приведенной выше команде. Вы, вероятно, получите "" отметки на внешней стороне пути, который вы вставили, и\обратную косую черту. Удалите метки "" и замените\обратную косую черту обычными косыми чертами /. Это сработало в такой ситуации, как у меня, удачи тебе.

0
user9357559