Использование 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 без пароля, но он не отвечает на мой вопрос.

HoKy22
источник
Мне кажется, что когда я запускаю свой экземпляр Amazon в Интернете, я больше не могу получить доступ к локальным файлам в
разделе «

Ответы:

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 .

WP McNeill
источник
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 если это каталог.

Syed Priom
источник
19

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

chmod 400 yourPublicKeyFile.pem
Castelmager
источник
Ты спас мой день, брат
Маюх Саркар
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
Prafull
источник
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 / awsinstance.pem my_local_file ubuntu@XX.XXX.XXX.XXX: / home / ubuntu

Скачать файл с сервера на локальный:

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

Вирадж Вадате
источник
1

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

Чтобы исправить эту конкретную проблему с использованием SCP:

  1. Вам необходимо указать правильного пользователя Linux. Из Амазонки :

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

    chmod 400 /path/to/yourKeyFile.pem
    
blackHoleDetector
источник
0

Проверьте права доступа к файлу .pem ... openssh обычно не любит общедоступные закрытые ключи и потерпит неудачу (iir, scp не делает большую работу по предоставлению этой обратной связи пользователю).

Можете ли вы просто использовать ssh с этим ключом для своего хоста AWS?

Брайан Стенсон
источник
Да, я могу использовать ssh с этим ключом на моем хосте AWS. На самом деле проблема в том, что я нахожусь на хосте Amazon (через ssh), поэтому, когда я делаю cd, я вижу только файлы на моем сервере Amazon, а не в локальном каталоге Mac Downloads, где я сохранил свой файл pem , Я могу зайти на свой локальный каталог загрузок Mac только когда выхожу из своего хоста ec2. Но если я выйду на свой хост ec2, я не смогу загрузить файл phpMyAdmin на мой сервер ec2. Разрешение моего pem 400, я думаю, это нормально.
HoKy22
2
Большое спасибо за помощь, я нашел мою проблему по последнему вопросу, который вы задали. Кажется, я могу или ssh или scp, а не два вместе.
HoKy22
спасибо за подсказку hellokitty22. У меня было два открытых терминала, один для ssh и один для scp тоже.
донебизкит
0

Сначала вы должны изменить режим .pemфайла с режима чтения и записи на режим только для чтения. Это можно сделать с помощью одной команды в терминале.sudo chmod 400 your_public_key.pem

Shravan40
источник
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'

user1738344
источник