Использование 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 в Интернете, я больше не могу получить доступ к локальным файлам в
разделе «

Ответы:


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 / 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
    

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


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.