Menggunakan scp untuk menyalin file ke instance Amazon EC2?

198

Saya mencoba menggunakan Terminal Mac saya untuk scp file dari Unduhan (phpMyAdmin saya unduh online) ke instance Amazon EC2 saya.

Perintah yang saya gunakan adalah:

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz  [email protected]:~/.

Kesalahan yang saya dapatkan: Peringatan: File identitas myAmazonKey.pem tidak dapat diakses: Tidak ada file atau direktori tersebut. Izin ditolak (publickey). kehilangan koneksi

Baik myAmazonkey.pem dan phpMyAdmin-3.4.5-all-languages.tar.gz saya ada di Unduhan, jadi saya mencoba

scp -i /Users/Hello_Kitty22/Downloads/myAmazonKey.pem /Users/Hello_Kitty22/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  [email protected]:~/.

dan kesalahan yang saya dapatkan: Peringatan: File identitas / Pengguna / Halo_Kitty22/Downloads / myAmazonkey.pem tidak dapat diakses: Tidak ada file atau direktori tersebut. Izin ditolak (publickey). kehilangan koneksi

Adakah yang bisa tolong beri tahu saya cara memperbaiki masalah saya?

ps ada posting serupa: scp (salinan aman) ke contoh EC2 tanpa kata sandi tetapi tidak menjawab pertanyaan saya.

HoKy22
sumber
Saya merasa ketika saya memulai contoh Amazon saya secara online, saya tidak dapat lagi mengakses file lokal saya di Unduhan
HoKy22

Jawaban:

376

Coba tentukan pengguna yang akan ec2-user, misalnya

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz [email protected]:~/.

Lihat Menghubungkan ke Linux / UNIX Instances Menggunakan SSH .

WP McNeill
sumber
16
bekerja dengan baik. Perhatikan bahwa pengguna default pengguna Anda mungkin "ubuntu" jika Anda menjalankan instance ubuntu.
RussellStewart
tentu saja menyalin ke / mungkin tidak berfungsi. Terima kasih telah mencerahkan!
dnuske
@DanielDropik Saya tidak tahu apakah Anda bercanda atau tidak ... tetapi :/akan mencoba menyalin folder ke root sistem, yang akan memberikan kesalahan izin pada semua mesin tanpa menjalankan sudo (atau sebagai root).
Dobz
mengapa dikatakan Tolong login sebagai pengguna "ubuntu" daripada "root" pengguna. apa yang harus saya lakukan untuk salinan
Arjun
dalam kasus saya saya menggunakan pengguna tetapi, perbedaannya saya tambahkan dns publik mec2-50-17-16-67.compute-1.amazonaws.com alih-alih nama domain
shareef
31

direktori kedua adalah tujuan target Anda, jangan gunakan nama server di sana. Dengan kata lain, Anda tidak perlu menyebutkan nama mesin untuk mesin yang Anda gunakan saat ini.

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

-r jika itu direktori.

Syed Priom
sumber
19

Kunci Anda tidak boleh dapat dilihat oleh publik agar SSH berfungsi. Gunakan perintah ini jika perlu:

chmod 400 yourPublicKeyFile.pem
Castelmager
sumber
Anda menyelamatkan kakak saya
Mayukh Sarkar
13

Anda harus berada di komputer lokal Anda untuk mencoba perintah scp di atas.

Di mesin lokal Anda coba:

scp -i ~/Downloads/myAmazonKey.pem ~/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  [email protected]:~/.
DV Dasari
sumber
9

Berikut ini rincian yang berfungsi untuk instance EC2 :

scp -i /path/to/whatever.pem /users/me/path-to-file [email protected]:~

Beberapa catatan untuk permulaan:

  1. Perhatikan spasi antara tiga parameter yang diberikan setelah -i
  2. scpsingkatan protokol salinan aman. Mengetahui kata-kata membuatnya lebih mudah untuk mengingat perintah.
  3. -imenentukan bahwa Anda perlu memberikan .pemfile sebagai param berikutnya. Jika tidak ada -i, maka Anda tidak perlu .pem.
  4. Catat :~di akhir tujuan untuk instance EC2.
Forrest
sumber
6

Saya memiliki masalah yang persis sama, solusi saya adalah untuk

scp -i /path/pem -r /path/file/ ec2-user@public aws dns name: (biarkan kosong di sini)

setelah Anda selesai bagian ini, masuk ke server ssh dan file mv ke lokasi yang diinginkan

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

Format SCP di bawah ini berfungsi untuk saya

scp -i /path/my-key-pair.pem [email protected]:~/SampleFile.txt ~/SampleFile2.txt

SampleFile.txt : Ini akan menjadi path dari direktori root Anda (Dalam kasus saya, / home / ubuntu). dalam kasus saya file yang ingin saya unduh ada di / var / www

SampleFile2.txt : Ini akan menjadi path dari path root mesin Anda (Dalam kasus saya, / home / MyPCUserName)

Jadi, saya harus menulis perintah di bawah ini

scp -i /path/my-key-pair.pem [email protected]:~/../../var/www/Filename.zip ~/Downloads
Vatsal Shah
sumber
2

Kirim file dari Lokal ke Server:

scp -i .ssh / awsinstance.pem my_local_file [email protected]: / home / ubuntu

Unduh file dari Server ke Lokal:

scp -i .ssh / awsinstance.pem [email protected]: / home / ubuntu / server_file.

Viraj Wadate
sumber
1

Proses menggunakan SCP untuk menyalin file dari mesin lokal ke instance AWS EC2 Linux dibahas langkah demi langkah (termasuk poin yang disebutkan di bawah) dalam video ini .

Untuk memperbaiki masalah khusus ini dengan menggunakan SCP:

  1. Anda perlu menentukan pengguna Linux yang benar. Dari Amazon :

    • Untuk Amazon Linux, nama pengguna adalah ec2-user.
    • Untuk RHEL, nama pengguna adalah ec2-user atau root.
    • Untuk Ubuntu, nama pengguna adalah ubuntu atau root.
    • Untuk Centos, nama pengguna adalah centos.
    • Untuk Fedora, nama pengguna adalah ec2-user.
    • Untuk SUSE, nama pengguna adalah ec2-user atau root.
    • Jika tidak, jika pengguna dan root ec2 tidak berfungsi, tanyakan penyedia AMI Anda.
  2. Kunci pribadi Anda tidak boleh terlihat oleh publik. Jalankan perintah berikut ini sehingga hanya pengguna root yang dapat membaca file.

    chmod 400 /path/to/yourKeyFile.pem
    
blackHoleDetector
sumber
0

Periksa izin pada file .pem ... openssh biasanya tidak suka kunci pribadi yang dapat dibaca dunia, dan akan gagal (iir, scp tidak melakukan pekerjaan yang baik dalam memberikan umpan balik ini kepada pengguna).

Bisakah Anda ssh dengan kunci itu ke host AWS Anda?

Bryan Stenson
sumber
Ya, saya bisa ssh dengan kunci itu ke host AWS saya. Sebenarnya, masalah yang saya alami adalah, saya berada di host Amazon (melalui ssh), jadi ketika saya melakukan cd, saya hanya dapat melihat file di server Amazon saya, bukan direktori Mac Download lokal di mana saya menyimpan file pem saya . Saya hanya dapat melakukan cd ke direktori Downloads Mac lokal saya ketika saya keluar dari host EC2 saya. Tetapi jika saya keluar ke host EC2 saya, saya tidak bisa mengunggah file phpMyAdmin ke server EC2 saya. Izin pem saya adalah 400, saya pikir tidak apa-apa.
HoKy22
2
Terima kasih banyak atas bantuannya, saya menemukan masalah saya dengan pertanyaan terakhir yang Anda ajukan. Sepertinya saya bisa ssh atau scp, bukan dua bersama-sama.
HoKy22
terima kasih atas petunjuknya hellokitty22. Saya memiliki dua terminal yang terbuka satu untuk ssh dan satu untuk scp juga.
donebizkit
0

Pertama, Anda harus mengubah mode .pemfile dari mode baca dan tulis menjadi mode hanya baca. Ini dapat dilakukan hanya dengan satu perintah di terminalsudo chmod 400 your_public_key.pem

Shravan40
sumber
0

Saya mencoba semua saran yang disebutkan di atas dan tidak ada yang berhasil. Saya mengakhiri instance saat ini, meluncurkan yang lain dan mengulangi proses yang sama persis. Kali ini tidak ada masalah. Terkadang itu mungkin kesalahan remote ami.

Marie D.
sumber
0

Ini hanya bekerja untuk saya. Saya menggunakan kombinasi dua jawaban lain untuk pertanyaan ini.

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

"[email protected]" disalin dan ditempel dari DNS publik instance EC2 Anda.

Norman Davis
sumber
-1

Saya akan menggunakan:

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

pengguna1738344
sumber