Проблема 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).
    

    Що може бути проблемою і як змусити її працювати?


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


6
Ти рок! Так чорт простий!
— Олексій

50
Ви також можете використовувати ssh-add ec2-keypair.pem, щоб ви могли залишити опцію -i
— AdamK

12
якщо ви спробуєте root, і ви отримаєте "Будь ласка, увійдіть як користувач ec2-користувача, а не root-користувач." "використовуйте ec2-користувача замість root.
— Тоні

8
А деякі зображення Ubuntu, здається, мають лише користувача "ubuntu". (Що може судо коріння.)
— Контракт проф. Фолкена порушив

1
Супер, супер корисно.
— NSCoder

93

Тепер це:

ssh -v -i ec2-keypair.pem ec2-user@[yourdnsaddress]

Дякую. Це знадобилося мені віками, щоб дізнатися це - це не згадується в інформації про підключення з консолі! Це говорить вам, коли ви намагаєтесь використовувати root, але я подумав, що користувач ec2 - це посилання на моє ім’я користувача. До!
— Адріан Муат

1
О людино. Знайти непросту штуку. Дякую!
— vroomfondel

дякую, не просто ти знайдеш цього

Дуже добре! Дякую!
— Віана

46

Випуски Canonical використовують користувальницьку "ubuntu" за замовчуванням для тих, хто приземлився сюди із зображенням ubuntu, що виникає з тією ж проблемою.


2
Нелегко знайти це.
— Густав

17

Якщо ви використовуєте зображення Bitnami, увійдіть як "bitnami".

Здається, очевидно, але щось я не помітив.


Ваша відповідь врятувала мені день!
— Суря

2
Ти мав на увазі? Seems <sarcasm>obvious</sarcasm>
— Боб Штейн

Інструкції Bitnami , включаючи, як знайти паролі бази даних.
— Боб Штейн


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
— dano

5

Я також натрапив на це - виявляється, я використовував створений спільнотою AMI - і ім'я користувача за замовчуванням було niehter root, а також не було ect-user або ubuntu. Насправді я поняття не мав, що це таке - доки я не спробував " root " і сервер люб'язно попросив мене увійти як xxx, де xxx - це все, що вам скаже.

-чере!


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 key>
— Vaibhav Jain

3

використовувати ...

# chmod 400 ec2-keypair.pem

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


2

це працювало для мене:

ssh-keygen -R <server_IP>

для видалення старих ключів, збережених на робочій станції, також працює замість

потім знову зробив те ж сш:

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

в екземплярах ubuntu ім'я користувача: ubuntu в Amazon Linux AMI ім'я користувача: ec2-користувач

Мені не довелося заново створювати екземпляр із зображення.



2

Доступно два кроки:

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

chmod 400 toto.pem

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

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

Сподіваюся, це допомагає!


1

Якщо ви використовуєте EBS, ви також можете спробувати встановити том EBS на запущеному екземплярі. Потім встановіть його на цей запущений екземпляр і подивіться, що відбувається в / home. Ви можете бачити такі речі, як користувач ubuntu чи ec2-користувач? чи у нього є праві відкриті ключі під ~ / .ssh / санкціонованими_ ключами



1

Якщо у вас запущено зображення AWS від Bitnami. Ім’я користувача було би битами. Ура!

побачити мою налагодження і подивитися останній:

*

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)".


1

Його користувач ec2 для AMI Amazon Linux та ubuntu для зображень Ubuntu. Крім того, RHEL 6.4 і пізніших ec2-користувач RHEL 6.3 і більш ранній кореневий Fedora ec2-користувач Centos root


0

Просто додавання до цього списку. Сьогодні вранці у мене виникли проблеми з новим користувачем, щойно доданим до екземпляра AWS EC2. Щоб вирішити погоню, проблемою був selinux (який знаходився в режимі примусового виконання ), а також той факт, що мій домашній dir dir був на новому томі, що додається до 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-користувача" або "root".

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

Сподіваюсь, це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.