Попытка SSH в экземпляр Amazon Ec2 - ошибка разрешения

Это, наверное, довольно глупый вопрос для некоторых:)

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

Когда я попытался ssh с:

ssh -i myfile.pem <public dns>

Я получил:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).

Следуя этому сообщению, я попытался выполнить chmod +600 файл pem, но теперь, когда я ssh, я просто получаю:

Permission denied (publickey).

Какую ошибку школьного мальчика я здесь делаю?  Файл .pem находится в моей домашней папке (в ОСО). Это разрешение выглядит следующим образом:

[email protected]   1 mattroberts  staff    1696 19 Nov 11:20 amazonec2.pem

Ответ 1

Проблема связана с неправильным модом в файле.

Легко решается путем выполнения -

chmod 400 mykey.pem

Взято из инструкций Amazon -

Ваш ключевой файл не должен быть общедоступным для работы SSH. Использовать это при необходимости: chmod 400 mykey.pem

Ответ 2

Вероятно, вы используете неправильное имя пользователя для входа:

  • У большинства изображений Ubuntu есть пользователь ubuntu
  • Amazon AMI ec2-user
  • большинство изображений Debian имеют либо root, либо admin

Для входа в систему вам необходимо настроить команду ssh:

ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-host

НТН

Ответ 3

Я знаю, что это очень поздно для игры... но это всегда работает для меня:

шаг 1

ssh-add ~/.ssh/KEY_PAIR_NAME.pem

шаг 2, просто ssh в :)

ssh [email protected]<instance public dns/ip>

например

ssh [email protected]

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

Ответ 4

Добрый человек, единственное, что сработало для меня:

  • Изменить разрешения ключа

    chmod 400 mykey.pem

  • Обязательно войдите в систему, используя ec2-user, и правильный адрес ec2-99.... Адрес ec2-99 находится внизу консоли aws, когда вы вошли в систему и видите свой экземпляр, указанный в списке

    ssh -i mykey.pem [email protected]

Ответ 5

Взгляните на в этой статье. Вы не используете общедоступный DNS, а форму

ssh -i your.pem [email protected]

где имя отображается на панели AMI

Ответ 7

В окнах вы можете перейти к свойствам файла pem, и перейти на вкладку "Безопасность", затем нажать кнопку "Далее".

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

Ответ 8

В терминале Mac выполнение "chmod 400 xyz.pem" не помогло мне, оно продолжало говорить, что разрешение было отклонено. Для пользователей ubuntu я бы предложил

  • ssh-add xyz.pem
  • ssh -i xyz.pem [email protected] (обратите внимание, что пользователь ubuntu)

Ответ 9

Я знаю, что на этот вопрос уже был дан ответ, но для тех, кто их пробовал, и вы все еще получаете раздражающее "Permission denied (publickey)". Попробуйте запустить команду с помощью SUDO. Конечно, это временное решение, и вы должны правильно устанавливать разрешения, но, по крайней мере, это позволит вам определить, что ваш текущий пользователь не работает с теми привилегиями, которые вам нужны (как вы предполагали)

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com

Как только вы сделаете это, вы получите следующее сообщение:

Please login as the user "ec2-user" rather than the user "root"

который также мало документирован. В этом случае просто выполните следующее:

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user

И вы получите великолепный:

   __|  __|_  )
   _|  (     /   Amazon Linux AMI
  ___|\___|___|

Ответ 10

SSH-ключи и лучшие методы доступа к файлам:

  • .ssh directory - 0700 (только по желанию владельца)
  • файл закрытого ключа /.pem - 0400 (только для чтения владельцем)
  • открытый ключ /.pub файл - 0600 (чтение и запись только владельцем)

    chmod XXXX file/directory

Ответ 11

ssh -i/.pem user @host-machine-IP

Я думаю, потому что либо вы ввели неправильные учетные данные или вы используете открытый ключ, а не закрытый ключ или, ваши разрешения порта открыты для ВСЕХ к ssh. Это плохо для Amazon.

Ответ 12

Альтернативный вход в систему с использованием PuTTY. Это хорошо, но нужно несколько шагов.

  • Получите ваш .pem, который был сгенерирован, когда вы впервые сделали экземпляр EC2.
  • Преобразовать файл .pem.ppk с помощью PuttyGen, так как PuTTY не читает .pem.
  • Откройте PuTTY и введите Имя хоста, которое является вашим именем пользователя + Public DNS (пример [email protected]). Не ваше имя пользователя AWS.
  • Затем перейдите к Connection > SSH > Auth. Затем добавьте файл .ppk. Нажмите "Обзор", где указано "Файл приватного ключа для аутентификации".
  • Нажмите "Открыть", и вы сможете сразу установить соединение.

Im, используя PuTTY 0.66 в Windows.

Ответ 13

Сделайте chmod 400 yourkeyfile.pem Если ваш экземпляр - Amazon linux, используйте ssh -i yourkeyfile.pem ec2-user @ip для ubuntu ssh -i yourkeyfile.pem ubuntu @ip для centos ssh -i yourkeyfile.pem centos @ip

Ответ 14

По этой причине могут быть три причины.

  • Вы используете неправильный ключ.
  • У вашего ключа нет правильных разрешений. Вам нужно chmod до 400.
  • Вы используете неправильного пользователя. У изображений Ubuntu есть пользователь ubuntu, Amazon AMI - ec2-user, а изображения debian имеют либо root, либо admin

Ответ 15

Проблема для меня заключалась в том, что мой файл .pem находился в одном из моих разделов NTFS. Я переместил его в раздел Linux (ext4).

Дали необходимые разрешения, запустив:

chmod 400 my_file.pem

И это сработало.

Ответ 16

Контрольный список:

  • Используете ли вы правильный файл с закрытым ключом .pem?

  • Правильно ли установлены его разрешения? (Мои AMI-модели Amazon работают с 644, но Red hat должен быть не менее 600 или 400. Не знаю о Ubuntu.)

  • Используете ли вы правильное имя пользователя в своей строке ssh? Amazon-branded = "ec2-user", Red Hat = "root", Ubuntu = "ubuntu". Пользователь может быть указан как "ssh -i pem usename @hostname" ИЛИ "ssh -l username -i pem hostname"

Ответ 17

Просто измените разрешение файла pem на 0600, разрешив только разрешенному пользователю, и оно будет работать как прелесть.

sudo chmod 0600 myfile.pem

И затем попробуйте ssh, он будет работать отлично.

ssh -i myfile.pem <<ssh_user>>@<<server>>

Ответ 18

По умолчанию разрешение не позволяет использовать ключ pem. Вам просто нужно изменить разрешение:

chmod 400 xyz.pem

и если экземпляр ubuntu подключается с помощью:

ssh -i xyz.pem [email protected]

Ответ 19

В дополнение к другим ответам, вот что я сделал для того, чтобы это работало:

  • Скопируйте ключ в папку .ssh, если у вас еще не было:

cp key.pem ~/.ssh/key.pem

  • Дайте соответствующие разрешения ключу

chmod 400 ~/.ssh/key.pem

eval 'ssh-agent -s' ssh-add

  • Затем добавьте ключ

ssh-add ~/.ssh/key.pem

Теперь вы должны быть в состоянии SSH EC2 (:

Ответ 20

Что ж, глядя на описание вашего поста, я чувствую, что вы сделали 2 ошибки: -

  1. Установите правильные разрешения для закрытого ключа. Команда ниже должна помочь вам установить правильное разрешение файла.

    chmod 0600 mykey.pem

  2. Неправильный пользователь ec2 вы пытаетесь войти.

    Глядя на ваш журнал отладки, я думаю, что вы создали экземпляр Amazon Linux. Пользователь по умолчанию для этого типа экземпляра - ec2-user. Если бы этот экземпляр был Ubuntu, то вашим пользователем по умолчанию был бы ubuntu.

    ssh -i privatekey.pem [email protected]_ip

Note:
   For an Amazon Linux AMI, the default user name is ec2-user.

   For a Centos AMI, the default user name is centos.

   For a Debian AMI, the default user name is admin or root.

   For a Fedora AMI, the default user name is ec2-user or fedora.

   For a RHEL AMI, the default user name is ec2-user or root.

   For a SUSE AMI, the default user name is ec2-user or root.

   For an Ubuntu AMI, the default user name is ubuntu.

   Otherwise, if ec2-user and root don't work, check with the AMI provider.

источник: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

Ответ 21

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

chmod 400 keyfile.pem

Если выше команда показывает ошибку разрешения, используйте

sudo chmod 400 keyfile.pem

Теперь зайдите в машину ec2, если вы все еще сталкиваетесь с проблемой, используйте ec2-user

ssh -i keyfile.pem [email protected]

Ответ 22

Что исправлено для меня, это переместить файл .pem в каталог приложений. Су сказал, что fooapp - это имя моего приложения. Я разместил его прямо там.

Ответ 23

Ниже приведены простые шаги для пользователя Linux для подключения к серверу с использованием файла .pem:

Шаг 1: Для размещения файла pem и скопировать его в исходное местоположение .ssh.

cp example.pem ~/.ssh/example.pem

Шаг 2. Измените разрешение

chmod 400 ~/.ssh/example.pem

Шаг 3. Запустите следующую команду

ssh -i ~/.ssh/example.pem [email protected]

Поскольку эта команда слишком длинная, поэтому вы можете создать псевдоним этого, используя следующие команды:

 vim ~/.bashrc

Напишите ту же самую команду следующим образом.

alias sshConnect='ssh -i ~/.ssh/example.pem [email protected]'

Теперь перезагрузите систему и используйте sshConnect для подключения к вашему серверу.

Ответ 24

Это просто проблема с разрешением вашего ключа aws pem.

Просто измените разрешение ключа pem на 400, используя приведенную ниже команду.

chmod 400 pemkeyname.pem

Если у вас нет разрешения на изменение разрешения файла, вы можете использовать команду sudo, как показано ниже.

sudo chmod 400 pemkeyname.pem

Я надеюсь, что это должно работать нормально.

Ответ 25

Я видел две причины этой проблемы

1) ключ доступа не имеет прав доступа. Ключи pem с разрешением по умолчанию не позволяют устанавливать безопасное соединение. Вам просто нужно изменить разрешение:

chmod 400 xyz.pem

2) Также проверьте, зарегистрировали ли вы -i n с правильными учетными данными пользователя. В противном случае используйте sudo при подключении

sudo ssh -i {keyfile} ec2-user @{IP-адрес удаленного хоста}

Ответ 26

Ваш ключ не должен быть общедоступным для работы SSH. Используйте эту команду, если необходимо:

chmod 400 Interview-apps.pem

Connect to your instance using its Public DNS:

ec2-**-***-***-***.us-west-2.compute.amazonaws.com

Пример:

ssh -i "Interview-apps.pem" [email protected]**-***-***-***.us-west-2.compute.amazonaws.com

Ответ 27

Иногда в папке может быть ошибка. Я не знаю почему...

Вы можете изменить папку и попробовать еще раз. Например, вы можете экспериментировать в обычных папках ("Рабочий стол", "Загрузки" и т.д.).

Я попробовал этот метод и работал

Ответ 28

Эта ошибка только из-за разрешения.

Просто дайте разрешение 600

#chmod 600 pemfilepath

Ответ 29

добавление флага -v для меня

ssh -v -i your.pem <aws dns or ip>