Разрешение Amazon EC2 отклонено (publickey) - PullRequest
72 голосов
/ 28 января 2011

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

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

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

Permission denied (publickey).

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

Permission denied (publickey).

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

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

Ответы [ 13 ]

75 голосов
/ 28 января 2011

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

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

, затем подключился к:

ssh ec2-user@[ec2 instance ip]

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

ssh -i ~/.ssh/[keypair name] ec2-user@[ec2 instance ip]

возвращает меня.

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

28 голосов
/ 29 мая 2013

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

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

14 голосов
/ 09 декабря 2011

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

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

12 голосов
/ 19 января 2012

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

3 голосов
/ 19 марта 2015

Спасибо!

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

Удобство

Поскольку вам приходится создавать разные пары ключей для каждой зоны доступности, становится довольно сложно управлять ими всеми и командами, которые их используют. При правильной настройке в ~/.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
2 голосов
/ 21 апреля 2017

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

ssh -i [key name] ubuntu@[EC2 instance ip]
1 голос
/ 12 марта 2013

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

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

0 голосов
/ 16 января 2019

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

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

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

enter image description here

Если вы используете номер 4 без предшествующего ему символа ec2-user@, вы получите

Permission denied (publickey).

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

0 голосов
/ 08 апреля 2018

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

0 голосов
/ 29 августа 2017

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

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