scp (захищена копія) для екземпляра ec2 без пароля


404

У мене запущений екземпляр EC2 (FreeBSD 9 AMI ami-8cce3fe5), і я можу ввімкнути його за допомогою мого створеного Amazon файлу ключів без запрошення пароля, без проблем.

Однак, коли я хочу скопіювати файл в екземпляр за допомогою scp, мене попросять ввести пароль:

scp somefile.txt -i mykey.pem root@my.ec2.id.amazonaws.com:/

Password:

Будь-які ідеї, чому це відбувається / як це можна запобігти?


Використовуєте ви ексклюзивно один і той же ідентифікатор для користувача та хоста?
Лінч

Я не впевнений, що я розумію, що ви маєте на увазі під ідентифікатором, ви могли б пояснити?
Хофф

якщо для одного з'єднання ви використовуєте Ip-адресу, а для іншого ви використовуєте ім'я, воно не працюватиме. Я щойно бачив, що ви використовуєте -iваріант, щоб вказати свою особу. Можливо, вам слід також показати команду, якою ви користуєтесь для входу за допомогою ssh.
Лінч

спасибі лінч, зрозумів це!
Гофф

Відповіді:


804

Я зрозумів це. Я мав аргументи в неправильному порядку. Це працює:

scp -i mykey.pem somefile.txt root@my.ec2.id.amazonaws.com:/

14
з тих, хто розуміє, як підключитися до ec2 через ssh, просто змініть sshкоманду на scpта додайте файл імені після файлу pem.
Клаудіо Сантос

11
Оскільки ця відповідь трохи стара, останній приклад з мого нового екземпляра EC2: scp -i kp1.pem ./file.txt ec2-user@1.2.3.4: / home / ec2-user
siliconrockstar

1
@siliconrockstar Ваша заява ec2-user@1.2.3.4:/home/ec2-userлегко замінюється коротшою та легшою ec2-user@1.2.3.4:./ ./FTW!
brock

2
Дуже пізній коментар, але те, що @ClaudioSantos пропонує, не працює точно, якщо ви використовуєте нестандартний порт. Це -p для ssh і -P для scp.
Inukshuk

1
Я можу використовувати свій файл * .PEM для ssh в ec2. однак, коли я хочу використовувати його для файлу SCP, він дає мені помилку "Відмовлено у дозволі"! Як я можу це вирішити?
AleX_

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

Параметр (-r) не обов'язковий, але його потрібно видалити (/) з кінця віддаленого шляху. Ваш приклад працював на мене, спасибі велике
Аббас

35

Я використовував команду нижче, щоб копіювати з локального Linux Linux Centos 7 на AWS EC2.

scp -i user_key.pem file.txt ec2-user@my.ec2.id.amazonaws.com:/home/ec2-user


19
scp -i ~/.ssh/key.pem ec2-user@ip:/home/ec2-user/file-to-copy.txt .

Ім'я файлу не повинно бути між файлом pem та рядком користувача ec2 - це не працює. Це також дозволяє зарезервувати ім'я скопійованого файлу.


14

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

sudo scp -i my-pem-file.pem ./source/test.txt ec2-user@1.2.3.4:~/destination/

скопіюйте файл з віддаленого сервера на локальну машину

sudo scp -i my-pem-file.pem ec2-user@1.2.3.4:~/source/of/remote/test.txt ./where/to/put

Отже, в основному синтаксис такий:

scp -i my-pem-file.pem username@source:/location/to/file username@destination:/where/to/put

-iє для ідентифікаційного_файлу


8

дозволяє припустити, що ваш файл pem та деякий файл.txt, який ви хочете надіслати, знаходяться у папці завантажень

scp -i ~/Downloads/mykey.pem ~/Downloads/somefile.txt root@my.ec2.id.amazonaws.com:~/

дайте мені знати, якщо це не працює


scp -i /Users/Username/Downloads/myfile.pem -r ubuntu@my.ect.id.amazonaws.com: ~ / ~ / Desktop / у випадку, якщо ви хочете перенести файл з сервера на локальний
Yatender Singh

2
Дякую, я отримав "заборонений доступ" :/наприкінці, але :~/він працює
кардамон

так, тому що: / є коренева папка і: ~ / - це папка користувача, тому якщо ви користувач root, то: / або: ~ / все працюватиме, а якщо ви не користувач root, то тільки: ~ / ви повинні використовувати.
Yatender Singh

3

scp -i /home/barkat/Downloads/LamppServer.pem lampp_x64_12.04.tar.gz

це буде дуже корисно для всіх вас, хлопці


2

Мій hadoopec2cluster.pemфайл був єдиним у каталозі на моєму локальному mac, не вдалося скопіювати його на Aws за допомогою scp -i hadoopec2cluster.pem hadoopec2cluster.pem ubuntu@serverip:~.

Скопійовано hadoopec2cluster.pem в hadoopec2cluster_2.pem, а потім scp -i hadoopec2cluster.pem hadoopec2cluster_2.pem ubuntu@serverip:~. Вуаля!


2

Мене з цього приводу припинили, оскільки я вказував свій файл відкритого ключа

scp -i [private key file path]

Коли я зрозумів цю помилку і замінив її на шлях приватного ключа, я був налаштований.


2

У вашому випадку у користувача rootне виникне жодних проблем. Але в деяких випадках, коли вам потрібно ввійти в SSH як інший користувач, переконайтеся, що каталог, який ви використовуєте, scpмає адекватні дозволи для користувача, якого ви SSH.


1

Щоб використовувати PSCP, вам потрібен приватний ключ, який ви створили при перетворенні вашого приватного ключа за допомогою PuTTYgen. Вам також потрібна загальнодоступна DNS-адреса вашого екземпляра Linux

pscp -i C:\path\my-key-pair.ppk C:\path\Sample_file.txt ec2-user@public_dns:/home/ec2-user/Sample_file.txt

0

написати цей код

scp -r -o "ForwardAgent=yes" /Users/pengge/11.vim root@192.168.2.228:/root/

Якщо у вас ключ SSH з доступом до цільового сервера, а вихідний сервер цього не робить, додавання -o "ForwardAgent = так" дозволить переслати ваш SSH-агент на вихідний сервер, щоб він міг використовувати ваш ключ SSH для підключення до сервер призначення.


-6

Щойно перевірений:

Виконайте таку команду:

sudo shred -u /etc/ssh/*_key /etc/ssh/*_key.pub

Тоді:

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