Що таке правильний дозвіл на файл .pem для SSH та SCP


69

Я спробував 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:

scp -i sentiment.pem ec2-user@54.555.555.555: / home / ubuntu / sentimentfolder / Користувачі / Toga / Настільний / sentimentlocal

3.) додав команду -i, посилався на файл .pem, змінив користувача для AWS на користувача ec2 та додав повний шлях до розташування файлу .pem:

scp -i /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ec2-user@54.555.555.555: / home / ubuntu / sentiment / Користувачі / Toga / Настільний / sentimentlocal


Ви повинні сказати scp також використовувати .pem файл
daniel kullmann

дякую, що зателефонували @danielkullmann, що має сенс. Я спробував комбінацію команд, на які безпосередньо посилався файл .pem, але поки нічого не працює. Я оновив питання в розділі під назвою "Спроби команд SCP", щоб передати те, що я спробував. Якщо ви альтернативна команда, будь ласка, повідомте мене про це. Дякую.
Джордж Єстер

Відповіді:


110

Перейдіть сюди Як підключитися до Amazon EC2 дистанційно за допомогою SSH або зверніться нижче.

Як підключитися до Amazon EC2 віддалено за допомогою SSH:

  1. Завантажте файл .pem.
  2. На панелі керування Amazon виберіть "Екземпляри" на лівій бічній панелі, а потім виберіть примірник, до якого ви хочете підключитися.
  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 -r.
bahamat

1
Відмінна відповідь. Щоб уникнути переміщення pem навколо, ви можете використовувати прапор ssh -i, щоб вказати відкритий ключ, який потрібно використовувати. наприклад: ssh -i шлях / до / ec2private.pem ec2-54-23-23-23-34.example.amazonaws.com
Mafro34

14

chmod 400 {keyfile}.pem це те, що наказав Amazon, і це працює.


Це відповідь, яку я шукав, усі вказівки у прийнятій відповіді є гарною практикою ... але не мають значення для проблеми.
сарінк

3

Здається, ви повинні використовувати не IP-адресу, а повне ім'я хоста системи в команді SCP. Документи AWS описують це на сторінці http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInsancesLinux.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)" з віддаленого сервера, тому ви або використовуєте неправильну клавішу, підключення заборонено, або є помилка друку у віддаленому дозволеному_кеві файлі.


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.