Попытка 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
Ответ 6
Измените разрешение для файла ключа с помощью:
chmod 400 key-file-name.pem
См. документацию AWS для подключения к экземпляру:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux
Ответ 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-ключи и лучшие методы доступа к файлам:
Ответ 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 ошибки: -
-
Установите правильные разрешения для закрытого ключа. Команда ниже должна помочь вам установить правильное разрешение файла.
chmod 0600 mykey.pem
-
Неправильный пользователь 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>