Проблема доступа AWS ssh «Отказано в доступе (publickey)» [закрыто]

284

Как подключиться к экземпляру AWS через ssh?

У меня есть:

  1. Зарегистрирован в AWS;
  2. Создали открытый ключ и сертификат на веб-сайте AWS и сохранили их на диск;
  3. Зашел на мою консоль и создал переменные окружения:

    $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
    $ export EC2_CERT=/home/default/aws/cert-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
    $ export EC2_PRIVATE_KEY=/home/default/aws/pk-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
    
  4. Сказал API AWS использовать эту пару ключей и сохранил ее в файл:

    $ ec2-add-keypair ec2-keypair > ec2-keypair.pem
    
  5. Запустил экземпляр AWS Ubuntu 9, используя эту пару ключей:

    $ ec2-run-instances ami-ed46a784 -k ec2-keypair
    
  6. Попытка установить ssh-соединение с экземпляром:

    $ ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com
    OpenSSH_5.1p1 Debian-5ubuntu1, OpenSSL 0.9.8g 19 Oct 2007
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: Applying options for *
    debug1: Connecting to ec2-174-129-185-190.compute-1.amazonaws.com [174.129.185.190] port 22.
    debug1: Connection established.
    debug1: identity file ec2-keypair.pem type -1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5ubuntu1
    debug1: match: OpenSSH_5.1p1 Debian-5ubuntu1 pat OpenSSH*
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_5.1p1 Debian-5ubuntu1
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: server->client aes128-cbc hmac-md5 none
    debug1: kex: client->server aes128-cbc hmac-md5 none
    debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
    debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
    debug1: Host 'ec2-174-129-185-190.compute-1.amazonaws.com' is known and matches the RSA host key.
    debug1: Found key in /home/default/.ssh/known_hosts:11
    debug1: ssh_rsa_verify: signature correct
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: SSH2_MSG_SERVICE_REQUEST sent
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: ec2-keypair.pem
    debug1: read PEM private key done: type RSA
    debug1: Authentications that can continue: publickey
    debug1: No more authentication methods to try.
    Permission denied (publickey).
    

    В чем может быть проблема и как заставить это работать?

Alex
источник
2
Иронично то, что я использую «root» в качестве имени пользователя, но «ubuntu» (то, что вы упомянули) - правильное имя для моего AMI, и спасибо за ваш пост!
Realjin

Ответы:

512

Для экземпляров Ubuntu:

chmod 600 ec2-keypair.pem
ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com

В других случаях вам, возможно, придется использовать ec2-userвместо ubuntu.

В большинстве образов EC2 Linux, которые я использовал, по умолчанию создается только пользователь root.

Смотрите также: http://www.youtube.com/watch?v=WBro0TEAd7g

sipwiz
источник
6
Ты жжешь! Так чертовски просто!
Алекс
50
Вы также можете использовать ssh-add ec2-keypair.pem, чтобы отключить опцию -i
AdamK
12
если вы попробуете root, и вы получите «Пожалуйста, войдите как пользователь ec2, а не как пользователь root.» »используйте ec2-user вместо root.
Тони
8
И некоторые образы Ubuntu, кажется, имеют только пользователя "Ubuntu". (Который может судить.)
Проф. Фалькен
1
Супер, супер полезно.
NSCoder
93

Теперь это:

ssh -v -i ec2-keypair.pem ec2-user@[yourdnsaddress]
SSH
источник
Спасибо. Мне понадобилось много времени, чтобы это выяснить - это не упоминается в информации о подключении с консоли! Он говорит вам, когда вы пытаетесь использовать root, но я подумал, что ec2-user - это ссылка на мое имя пользователя. Doh!
Адриан Муат
1
О чувак. Не легко найти лакомый кусочек. Спасибо!
vroomfondel
спасибо, не легко найти это
Очень хорошо! Спасибо!
Виана
46

Релизы Canonical по умолчанию используют пользователя 'Ubuntu' для любого, кто приземлится здесь с изображением Ubuntu, которое сталкивается с той же проблемой.

Брион
источник
2
Не легко найти это.
Густав
17

Если вы используете изображение Bitnami, войдите как «bitnami».

Кажется очевидным, но кое-что я упустил.

аким
источник
Ваш ответ спас мой день!
Сурья
2
Вы имели в виду? Seems <sarcasm>obvious</sarcasm>
Боб Стейн
Битнами инструкции , в том числе, как найти пароли базы данных.
Боб Стейн
8

Для моих образов Ubuntu, это на самом деле пользователь Ubuntu, а не пользователь ec2;)

Дин Хиллер
источник
5

Ubuntu 10.04 с openSSH

это точное использование:

ssh -v -i [yourkeypairfile] ec2-user@[yourdnsaddress]

например:

ssh -v -i GSG_Keypair.pem ec2-user@ec2-184-72-204-112.compute-1.amazonaws.com

Приведенный выше пример был взят непосредственно из учебника AWS для подключения к машине Linux / UNIX по адресу: http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide/

Карл Кротт
источник
С ключом ssh -i мы можем использовать только файл .pem.
ABHAY JOHRI
5

Он также будет жаловаться, если права доступа к файлу pem слишком открыты. CHMOD файл до 600, чтобы исправить это.

Аллан Бог
источник
Спасибо за этот совет - мне очень помогли
Билли Мун
4
Для новичков .. команда сделать это будет:chmod 600 your_file.pem
Дано
5

Я также столкнулся с этим - оказывается, я использовал созданный сообществом AMI - и именем пользователя по умолчанию было niehter root, а также ect-user или ubuntu. На самом деле, я понятия не имел, что это было - пока я не попробовал « root », и сервер любезно попросил меня войти в систему как xxx, где xxx - это то, что он говорит вам.

-cheers!

kevinfoundananswwer
источник
4

Вам нужен личный ключ на вашем локальном компьютере

Вам нужно знать IP-адрес или DNS-имя вашего удаленного компьютера или сервера, вы можете получить его из консоли AWS

Если вы пользователь Linux

  • Убедитесь, что разрешения для закрытого ключа 600 ( chmod 600 <path to private key file>)
  • Подключитесь к вашей машине с помощью ssh ( ssh -i <path to private key file> <user>@<IP address or DNS name of remote server>)

Если вы пользователь Windows

  • Используйте PuTTy для создания сеанса ssh ( http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.66-installer.exe )
  • Если ваш файл закрытого ключа в формате .pem, преобразуйте его в .ppk, используя puttygen
  • Запустите PuTTy, установите ppk-файл, IP-адрес или DNS-имя удаленного сервера и запустите сеанс ssh.
Винет Гуна
источник
Измените разрешение файла с помощью chmod 400 <ключ pem>
Vaibhav Jain
3

использовать ...

# chmod 400 ec2-keypair.pem

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

x1b2j
источник
2

это сработало для меня:

ssh-keygen -R <server_IP>

удалить старые ключи, хранящиеся на рабочей станции, также работает вместо

затем снова сделал то же самое ssh:

ssh -v -i <your_pem_file> ubuntu@<server_IP>

в экземплярах Ubuntu имя пользователя: ubuntu в Amazon Linux AMI имя пользователя: ec2-user

Мне не нужно было заново создавать экземпляр из изображения.

Cris
источник
2

Для экземпляров Debian EC2 пользователь admin.

Аластер Ирвин
источник
2

Есть 2 шага для подключения:

Chmod 400 на ваш закрытый ключ, как остальные, не могут получить доступ к вашему ключу:

chmod 400 toto.pem

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

ssh -i toto.pem ec2-user@XX.XX.XX.XXX

Надеюсь, поможет !

GuillaumeAgis
источник
1

Если вы используете EBS, вы также можете попробовать смонтировать том EBS на работающем экземпляре. Затем смонтируйте его на этом работающем экземпляре и посмотрите, что происходит в / home. Вы можете видеть такие вещи, как пользователь ubuntu или ec2-user? или он имеет правильные открытые ключи в ~ / .ssh / authorized_keys

Рико
источник
1

Разрешение на ec2-keypair.pemдолжно быть400

chmod 400 ec2-keypair.pem

Йог
источник
1

Если у вас запущен образ AWS из Битнами. Имя пользователя будет битнами. Ура!

посмотрите мой отладчик и посмотрите на последний:

*

ssh -v -i awsliferaysrta.pem.txt root@54.254.250.***
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to 54.254.250.*** [54.254.250.***] port 22.
debug1: Connection established.
debug1: identity file awsliferaysrta.pem.txt type -1
debug1: identity file awsliferaysrta.pem.txt-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 05:5c:78:45:c9:39:3a:84:fe:f8:19:5d:31:48:aa:5f
debug1: Host '54.254.250.***' is known and matches the RSA host key.
debug1: Found key in /Users/macbookpro/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: awsliferaysrta.pem.txt
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to 54.254.250.*** ([54.254.250.***]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Remote: Port forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Forced command.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Please login as the user "bitnami" rather than the user "root".

*

Хунг До
источник
1

В моем случае (Mac OS X) проблема была в типе прерывания файла. Попробуй это:

1.- Откройте файл .pem с помощью TextWrangler

2. В нижней части приложения проверьте, установлен ли тип прерывания «Windows (CRLF)».

pmartinezd
источник
1

Его ec2-пользователь для Amazon Linux AMI и Ubuntu для образов Ubuntu. Кроме того, RHEL 6.4 и более поздняя версия ec2-пользователя RHEL 6.3 и более ранняя версия root

Амит Аджит
источник
0

Просто добавляю в этот список. Сегодня утром у меня были проблемы с новым пользователем, только что добавленным в экземпляр AWS EC2. Чтобы вырезать в погоню, проблема была SELinux (который был в обеспечении режиме), а также в том, что мой домашний каталог пользователя был на новом томе, подключенном к EBS. Почему-то я полагаю, что selinux не нравится этот другой том. Мне потребовалось некоторое время, чтобы понять, как я просматривал все другие обычные проблемы с ssh (/ etc / ssh / sshd_config был в порядке, конечно, пароль не разрешен, права были правильными и т. Д.)

Исправление?

Пока (пока я не пойму, как разрешить пользователю использовать ssh на другом томе или каким-то образом сделать этот том истинной домашней директорией):

sudo perl -pi -e 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sudo setenforce 0

Вот и все. Теперь мой новый пользователь может войти, используя свой собственный ключ id_rsa.

Пьер Д
источник
0

Была такая же проблема. В доступе отказано (publickey) при попытке входа в систему с помощью 'ec2-user' или с помощью 'root'.

Погуглил номер AMI образа машины, и он указал информацию о входе в SSH прямо на вики-странице Debian.

Надеюсь это поможет.

Лайонел Моррисон
источник