Какое разрешение для файла .pem для SSH и SCP?


70

Я попытался подключиться к SSH на своем сервере AWS Ubuntu и скопировать каталог на локальный компьютер. На протяжении всего процесса я сталкиваюсь с различными ошибками прав доступа к файлам (см. Ниже).

Есть ли какое-то конкретное разрешение для файла, которое требуется для .pem файла, который позволяет мне работать с SSH и SCP?
Или мне нужно изменить разрешение файла дважды - один раз для SSH и другой для SCP после того, как я войду в систему?

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

SSH:

ssh -i sentiment.pem Todo@54.555.555.555

Скопируйте с удаленного на локальный компьютер с помощью:

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

Я на Mac OS X 10.7.5.


Методом проб и ошибок:

1.) После того, как я первоначально загрузил файл .pem, его разрешения были установлены, я ДУМАЮ: 0644

-rw-r - r - @ 1 Тогский посох 1692 18 февраля 21:27 sentiment.pem

Затем я попытался SSH через терминал и получил следующее:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0644 for 'sentiment.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: sentiment.pem
Permission denied (publickey).

2.) Я обновил права доступа к файлу: chmod 660 sentiment.pem

После обновления были установлены разрешения:

-rw-rw ---- @ 1 Тогский посох 1692 18 февраля 21:27 sentiment.pem

Затем я попытался SSH через терминал и получил следующее:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0660 for 'sentiment.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: sentiment.pem
Permission denied (publickey).

3.) Я обновил права доступа к файлу: chmod 600 sentiment.pem

После обновления были установлены разрешения:

-rw ------- @ 1 Тога персонал 1692 18 февраля 21:27 sentiment.pem

Затем я попытался SSH через терминал и был успешным!

4. После входа в систему я запускаю команду для копирования удаленного каталога на локальный компьютер с помощью:

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

Который возвращает:

Permission denied (publickey).

Попытки SCP:

1.) добавил команду -i и сослался на файл .pem:

scp -i sentiment.pem Todo@54.555.555.555: / home / ubuntu / sentimentfolder / Пользователи / Toga / Рабочий стол / sentimentlocal

2.) добавил команду -i, сослался на файл .pem и изменил пользователя для AWS на ec2-user:

scp -i sentiment.pem ec2-user@54.555.555.555: / home / ubuntu / sentimentfolder / пользователи / Toga / рабочий стол / sentimentlocal

3.) добавил команду -i, сослался на файл .pem, изменил пользователя для AWS на ec2-user и добавил полный путь к файлу для расположения файла .pem:

scp -i /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ec2-user@54.555.555.555: / home / ubuntu / sentiment / Пользователи / Toga / Desktop / sentimentlocal


Вы должны указать scp также использовать файл .pem
Даниэль Куллманн

спасибо, что назвали это @danielkullmann, что имеет смысл. Я попробовал комбинацию команд, которые ссылались на файл .pem напрямую, но пока ничего не получалось. Я обновил вопрос разделом «Попытки SCP», чтобы каталогизировать то, что я пытался. Если вы альтернативная команда, пожалуйста, дайте мне знать. Спасибо.
Джордж Шут

Ответы:


110

Посетите здесь Как подключиться к Amazon EC2 удаленно с помощью SSH или см. Ниже.

Как подключиться к Amazon EC2 удаленно, используя SSH:

  1. Загрузите файл .pem.
  2. В Amazon Dashboard выберите «Экземпляры» на левой боковой панели, а затем выберите экземпляр, к которому вы хотите подключиться.
  3. Нажмите «Действия», затем выберите «Подключить»
  4. Нажмите «Подключиться к автономному SSH-клиенту»
  5. Откройте окно терминала
  6. Создать каталог:

    # mkdir -p ~/.ssh
    
  7. Переместите загруженный файл .pem в каталог .ssh, который мы только что создали:

    # mv ~/Downloads/ec2private.pem ~/.ssh
    
  8. Измените права доступа к файлу .pem, чтобы его мог прочитать только пользователь root:

    # chmod 400 ~/.ssh/ec2private.pem
    
  9. Создайте файл конфигурации:

    # vim ~/.ssh/config
    

    Введите следующий текст в этот файл конфигурации:

    Host *amazonaws.com
    IdentityFile ~/.ssh/ec2private.pem
    User ec2-user
    

    Сохраните этот файл.

  10. Используйте команду ssh с вашим публичным DNS-именем хоста для подключения к вашему экземпляру.
    например:

    # ssh ec2-54-23-23-23-34.example.amazonaws.com
    

1
Мне любопытно: зачем понизить голос?
Эрик

1
Я НЕ голосовал против этого. Это на самом деле выглядит полезным, но я не уверен, что это решит проблему, когда мне нужно выполнить scp с удаленного компьютера на локальный. Я попробую и посмотрю, что произойдет. Спасибо Бабин.
Джордж Шут

При копировании всего каталога и его содержимого используйте scp -r.
Багамат

1
Отличный ответ. Чтобы избежать перемещения pem, вы можете использовать флаг ssh -i, чтобы указать открытый ключ для использования. например: ssh -i path / to / ec2private.pem ec2-54-23-23-23-34.example.amazonaws.com
Mafro34,

16

chmod 400 {keyfile}.pem это то, что поручил Амазонке, и это работает.


Это ответ, который я искал, все инструкции в принятом ответе являются хорошей практикой ... но не имеют отношения к проблеме.
Саринк

3

Кажется, вы не должны использовать IP-адрес, но полное имя хоста системы в команде SCP. Документы AWS описывают это на http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html в разделе «Перенос файлов в экземпляры Linux / Unix из Linux / Unix с помощью SCP».

И использовать -rдля копирования каталогов.

И обратите внимание, что имя пользователя по умолчанию отличается для разных изображений:

Для Amazon Linux имя пользователя по умолчанию - ec2-user. Для RHEL5 имя пользователя часто, rootно может быть ec2-user. Для Ubuntu имя пользователя ubuntu. Для SUSE Linux имя пользователя root. В противном случае обратитесь к своему поставщику AMI.

Итак, используйте эту команду:

scp -r -i  /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ubuntu@ec2-xx-xx-xx-xx.compute-x.amazonaws.com:~/sentiment /Users/Toga/Desktop/sentimentlocal

1
Хорошее напоминание о том, что мне нужно использовать правильное имя пользователя. Получите вышеупомянутую ошибку, и я должен был помнить использовать пользователя Ubuntu на экземплярах Ubuntu.
md_rasler

2

«Отказано в доступе (publickey)» с удаленного сервера, поэтому вы либо используете неправильный ключ, либо не можете подключиться, либо в удаленном файле author_keys есть опечатка.


2
chmod 0400 pemfile.pem

а также

ssh -i path_to_pem_file -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ec2-machine name

3
Пожалуйста, объясните вашу sshкоманду (а также предоставьте ссылку, если это возможно). Кстати, chmod 400был предоставлен в ответ девять месяцев назад.
Скотт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.