Amazon EC2 Permission denied (publickey)

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

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

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

Permission denied (publickey).

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

Permission denied (publickey).

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

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

Ответ 1

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

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 работает только внутри оболочки, в которой я ее выпустил. Когда я закрыл окно терминала и открыл другое, у меня больше не было этой пары ключей доступный без явного.

Ответ 2

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

Итак, быстрый google сообщает, что имя пользователя для AMI Bitnami - bitnami. Задача решена.

Ответ 3

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

$sudo less/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

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

Ответ 4

Обратите внимание, что после перезапуска экземпляра имя dns изменилось. Я пал на это несколько раз. Ключевой файл по-прежнему действителен, но "имя сервера" изменилось.

Ответ 5

Спасибо!

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

Удобство

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

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

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

## ~/.ssh/config

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 9

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

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

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

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

Ответ 10

Я также получил: Permission denied.

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

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

и ответ был:

debug1: No more authentication methods to try.

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

ssh-add -l

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

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

ssh-add filename

Это было успешно.

Ответ 11

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

Ответ 12

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

Ответ 13

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

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

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

enter image description here

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

Permission denied (publickey).

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

Ответ 14

В моем случае причина была в том, что я изменил права доступа к папке корневого каталога с помощью chmod. На веб-сайте AWS они описывают долгий способ изменения разрешений с помощью другого временного экземпляра. Тем не менее, я просто прервал старый экземпляр и запустил другой, и на этот раз не внес никаких изменений в разрешения корневого каталога, и все в порядке.