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