2011-01-28 3 views
72

Это, похоже, обычная проблема, но мой конкретный случай кажется немного другим.Amazon EC2 Permission denied (publickey)

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

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

Permission denied (publickey). 

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

Permission denied (publickey). 

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

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

ответ

75

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

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

+8

благодарит человека, продолжая забывать использовать часть «ec2-user», и возвращаемое сообщение об ошибке было не очень информативным об этой ошибке – pulkitsinghal

+20

Если это экземпляр ubuntu, используйте ssh -i ~/.ssh/[keypair name] ** ubuntu ** @ [ec2 instance ip] –

+0

Elastic Map Уменьшить кластер -> hadoop @ [ec2 instance ip] – craastad

14

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

$ Судо меньше/вар/Журнал/безопасный

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

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

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

$ CHMOD ог-RWX/дома/EC2 пользователю

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

+1

Полностью сохранен мой бекон, спасибо. – gazarsgo

+0

Mine, тоже ... старый ответ, но действительный решение. Спасибо чувак! –

+0

Что вы можете сделать, если у вас еще нет открытого подключения? – Nate

12

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

+1

Спасибо за этот намек. Это тоже моя проблема. – asmaier

1

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

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

28

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

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

+0

ЧАСЫ повторной установки экземпляра, изменение пар ключ-значение и т. Д. И т. Д. - получается это имя пользователя! Спасибо :) –

+3

Спасибо за подсказку. В моем случае это было наоборот, мне нужно было использовать 'ubuntu' в качестве имени пользователя. – STW

+0

Не работает для меня. Используя AMI Bitnami, они говорят, что битнами - это имя пользователя, используя правильный .pem, запущенный в новой оболочке и ничего.Чрезвычайно разочаровывает, это день 2 без прогресса. –

3

Спасибо!

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

Удобство

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

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

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

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

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

+0

Это не дает ответа на вопрос. Когда у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы сможете [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment); вместо этого [предоставить ответы, которые не требуют разъяснений у аськи) (http://meta.stackexchange.com/questions/214173/why-do-need-50-reputation-to-comment-what-can- я-делать-вместо этого). - [Из обзора] (/ review/low-quality-posts/14040061) – HimBromBeere

+0

Я установил зону по умолчанию для us-east-1, и я создал ключ с именем «mykey»., Позже я перешел в зону Сиднея и создал другое ключ с именем «mykey». Тогда, когда я – FrankCJ

+0

Это сработало спасибо! Ключ, который я получил, был ключом, который я использовал во время входа в другой регион. –

0

Я также получил: Разрешение отказано.

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

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

и ответ был:

debug1: No more authentication methods to try. 

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

ssh-add -l 

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

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

ssh-add filename 

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

+0

Это ответ/решение? Не совсем ясно, из того, что я читал, если вы действительно были успешны или нет. Я собираюсь предложить [править], основываясь на том, что, как я думаю, вы имели в виду, но, пожалуйста, откатите его, если это не точно. – gravity

1

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

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

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