Використовувати scp для копіювання файлу в екземпляр Amazon EC2?


200

Я намагаюся використовувати мій термінал Mac для того, щоб сканувати файл із завантажень (phpMyAdmin, який я завантажив в Інтернеті), до мого примірника Amazon EC2.

Я використовував команду:

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

Помилка, яку я отримав: Попередження: Файл особи myAmazonKey.pem недоступний: Немає такого файлу чи каталогу. Дозвіл відхилено (publickey). втрачений зв’язок

І мій myAmazonkey.pem, і phpMyAdmin-3.4.5-all-languages.tar.gz є у завантаженнях, тому я спробував

scp -i /Users/Hello_Kitty22/Downloads/myAmazonKey.pem /Users/Hello_Kitty22/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

і помилка, яку я отримав: Попередження: Файл посвідчення /User/Hello_Kitty22/Downloads/myAmazonkey.pem недоступний: такого файлу чи каталогу немає. Дозвіл відхилено (publickey). втрачений зв’язок

Може хто-небудь скажіть мені, як виправити свою проблему?

ps є схожий пост: scp (захищена копія) до екземпляра ec2 без пароля, але він не відповідає на моє запитання.


Мені здається, що коли я запускаю свій екземпляр Amazon в Інтернеті, я більше не можу отримати доступ до своїх локальних файлів у завантаженнях
HoKy22

Відповіді:


378

Спробуйте вказати користувача ec2-user, наприклад

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz ec2-user@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

Див. Розділ Підключення до екземплярів Linux / UNIX за допомогою SSH .


16
працює чудово. Зауважте, що ваш користувач за замовчуванням може бути "ubuntu", якщо ви використовуєте екземпляр ubuntu.
RussellStewart

звичайно, копіювання в / може не працювати. Дякую за просвітлення!
dnuske

@DanielDropik Я не знаю, жартуєте ви чи ні ..., але я :/спробую скопіювати папку в корінь системи, що дасть помилки дозволу на всіх машинах без запуску sudo (або як root).
Добз

чому це сказати Будь ласка, увійдіть як користувач "ubuntu", а не користувач "root". що мені потрібно зробити для копіювання
Арджун

у моєму випадку я користувався користувачем, але, різницю, я додаю публічний dns mec2-50-17-16-67.compute-1.amazonaws.com замість доменного імені
shareef

31

другий каталог - ваше цільове місце призначення, не використовуйте ім'я сервера там. Іншими словами, вам не потрібно згадувати ім’я машини для машини, в якій ви зараз перебуваєте.

scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path

-r, якщо це каталог.


19

Ваш ключ не повинен публічно переглядатись для роботи SSH. Використовуйте цю команду, якщо потрібно:

chmod 400 yourPublicKeyFile.pem

Ти врятував мого брата на день
Маюх Саркар

13

Ви повинні мати локальну машину, щоб спробувати вищезгадану команду scp.

На локальній машині спробуйте:

scp -i ~/Downloads/myAmazonKey.pem ~/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

9

Ось деталі того, що працює для екземпляра EC2 :

scp -i /path/to/whatever.pem /users/me/path-to-file ec2-user@ec2-55-55-555-555.compute-1.amazonaws.com:~

Кілька приміток для початку:

  1. Зверніть увагу на пробіли між трьома параметрами, заданими після -i
  2. scpозначає захищений протокол копіювання. Знання слів полегшує запам'ятовування команди.
  3. -iдиктує, що вам потрібно надати .pemфайл як наступний парам. Якщо немає -i, то вам не потрібно .pem.
  4. Зверніть увагу :~на кінець пункту призначення для екземпляра EC2.

7

У мене були точно такі ж проблеми, моє рішення було

scp -i /path/pem -r /path/file/ ec2-user@public aws dns name: (залиште це порожнім тут)

як тільки ви виконали цю частину, перейдіть до ssh-сервера та mv-файлу до потрібного місця


5
scp -i ~/path to pem file/file.pem -r(for directory) /PATH OF LOCAL/localfile user@hostname:PATH OF SERVER/serverdirectory

3

Нижче для мене працює формат SCP

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/SampleFile.txt ~/SampleFile2.txt

SampleFile.txt : Це буде шлях від вашого кореневого каталогу (У моєму випадку / home / ubuntu). у моєму випадку файл, який я хотів завантажити, був за адресою / var / www

SampleFile2.txt : Це буде шлях кореневого шляху вашої машини (У моєму випадку / home / MyPCUserName)

Отже, я повинен написати команду нижче

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/../../var/www/Filename.zip ~/Downloads

2

Надіслати файл з локального на сервер:

scp -i .ssh / awsinstan.pem my_local_file ubuntu@XX.XXX.XXX.XXX: / home / ubuntu

Завантажте файл із сервера на локальний:

scp -i .ssh / awsinstan.pem ubuntu@XX.XXX.XXX.XXX: / home / ubuntu / server_file.


1

Процес використання SCP для копіювання файлів з локальної машини на екземпляр AWS EC2 Linux висвітлюється крок за кроком (включаючи точки, згадані нижче) у цьому відео .

Щоб виправити цю конкретну проблему за допомогою SCP:

  1. Потрібно вказати правильного користувача Linux. З Амазонки :

    • Для Amazon Linux ім'я користувача - ec2-користувач.
    • Для RHEL ім'я користувача - користувач ec2 або root.
    • Для Ubuntu ім'я користувача - ubuntu або root.
    • Для Centos ім'я користувача - centos.
    • Для Fedora ім'я користувача - ec2-користувач.
    • Для SUSE ім'я користувача - ec2-користувач або root.
    • В іншому випадку, якщо користувач ec2 та root не працюють, зверніться до свого постачальника AMI.
  2. Ваш приватний ключ не повинен бути публічно видимим. Виконайте таку команду, щоб лише користувач root міг читати файл.

    chmod 400 /path/to/yourKeyFile.pem
    

0

Перевірте дозволи на.

Чи можете ви просто запустити ключ за допомогою цього ключа до хоста AWS?


Так, я можу запустити цей ключ за допомогою свого хоста AWS. Насправді проблема в мені полягає в тому, що я перебуваю на хості Amazon (через ssh), тож коли я створюю компакт-диск, я бачу лише файли на своєму сервері Amazon, а не в моєму локальному каталозі завантажень Mac, де я зберігав свій pem-файл . Я можу записатись у свій локальний каталог завантажень Mac, лише коли виходжу з хоста ec2. Але якщо я виходжу на свій хост ec2, я не зміг би завантажити файл phpMyAdmin на мій сервер ec2. Дозвіл мого пемса - 400, я думаю, це добре.
HoKy22

2
Дуже дякую за допомогу, я знайшов свою проблему за останнім запитанням, яке ви задали. Здається, я можу або ssh, або scp, не два разом.
HoKy22

дякую за підказку hellokitty22. У мене було два відкритих термінали, один для ssh і один для scp.
donebizkit

0

Спочатку слід змінити режим .pemфайлу з режиму читання і запису на режим лише читання. Це можна зробити лише однією командою в терміналіsudo chmod 400 your_public_key.pem


0

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


0

Це просто працювало для мене. Я використав комбінацію двох інших відповідей на це питання.

scp -i /Users/me/documents/myKP.pem -r /Users/me/desktop/testDir \
       ec2-user@ec2-11-111-11-11.compute-1.amazonaws.com:/home/ec2-user/remoteDir

"Ec2-user@ec2-11-111-11-11.compute-1.amazonaws.com" копіюється та вставляється з загальнодоступної DNS вашого екземпляра ec2.


-1

Я б використав:

scp -i "path to .pem file" "file to be copeide from local machine" username@amazoninstance: 'destination folder to copy file on remote machine'

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.