ใช้ scp เพื่อคัดลอกไฟล์ไปยังอินสแตนซ์ Amazon EC2 หรือไม่


200

ฉันกำลังพยายามใช้ Mac Terminal ของฉันเพื่อสแกนไฟล์จากดาวน์โหลด (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:~/.

และข้อผิดพลาดที่ฉันได้รับ: คำเตือน: ไฟล์ Identity /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 (หรือเป็นรูท)
Dobz

ทำไมมันถึงบอกว่ากรุณาเข้าสู่ระบบในฐานะผู้ใช้ "อูบุนตู" แทนที่จะเป็นผู้ใช้ "รูท" สิ่งที่ฉันต้องทำเพื่อคัดลอก
Arjun

ในกรณีของฉันฉันกำลังใช้ผู้ใช้ แต่ความแตกต่างที่ฉันเพิ่มสาธารณะ 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

คุณช่วยพี่ชายวันของฉัน
Mayukh Sarkar

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 ไปยังตำแหน่งที่ต้องการ



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

ส่งไฟล์จาก Local ไปยัง Server:

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

ดาวน์โหลดไฟล์จากเซิร์ฟเวอร์เป็น Local:

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


1

กระบวนการในการใช้ SCP เพื่อคัดลอกไฟล์จากเครื่องท้องถิ่นไปยังอินสแตนซ์ AWS EC2 Linux นั้นมีการครอบคลุมทีละขั้นตอน (รวมถึงจุดที่กล่าวถึงด้านล่าง) ในวิดีโอนี้

วิธีแก้ไขปัญหานี้โดยเฉพาะเมื่อใช้ SCP:

  1. คุณต้องระบุผู้ใช้ Linux ที่ถูกต้อง จากAmazon :

    • สำหรับ Amazon Linux ชื่อผู้ใช้คือ ec2-user
    • สำหรับ RHEL ชื่อผู้ใช้คือ ec2-user หรือรูท
    • สำหรับ Ubuntu ชื่อผู้ใช้คือ Ubuntu หรือรูท
    • สำหรับ Centos ชื่อผู้ใช้คือ centos
    • สำหรับ Fedora ชื่อผู้ใช้คือ ec2-user
    • สำหรับ SUSE ชื่อผู้ใช้คือ ec2-user หรือรูท
    • มิฉะนั้นถ้าผู้ใช้ ec2 และรูทไม่ทำงานให้ตรวจสอบกับผู้ให้บริการ AMI ของคุณ
  2. รหัสส่วนตัวของคุณจะต้องไม่ปรากฏต่อสาธารณะ รันคำสั่งต่อไปนี้เพื่อให้ผู้ใช้รูทเท่านั้นที่สามารถอ่านไฟล์ได้

    chmod 400 /path/to/yourKeyFile.pem
    

0

ตรวจสอบการอนุญาตในไฟล์. pem ... openssh มักจะไม่ชอบคีย์ส่วนตัวที่อ่านได้ทั่วโลกและจะล้มเหลว (iir, scp ไม่ได้ทำงานที่ยอดเยี่ยมในการให้ข้อเสนอแนะนี้กับผู้ใช้)

คุณสามารถ ssh ด้วยกุญแจนั้นไปยังโฮสต์ AWS ของคุณได้หรือไม่?


ใช่ฉันสามารถใช้คีย์นั้นต่อโฮสต์ AWS ของฉันได้ ในความเป็นจริงปัญหาที่ฉันมีคือฉันอยู่ในโฮสต์ Amazon (ผ่าน ssh) ดังนั้นเมื่อฉันทำ cd ฉันจะเห็นเฉพาะไฟล์บนเซิร์ฟเวอร์ Amazon ของฉันไม่ใช่ไดเรกทอรีดาวน์โหลด Mac ของฉันที่ฉันบันทึกไฟล์ pem ของฉัน . ฉันสามารถซีดีไปยังไดเรกทอรี Mac Downloads ในพื้นที่ของฉันเมื่อฉันออกจากโฮสต์ ec2 ของฉันเท่านั้น แต่ถ้าฉันออกจากโฮสต์ ec2 ของฉันฉันไม่สามารถอัปโหลดไฟล์ phpMyAdmin ไปยังเซิร์ฟเวอร์ ec2 ของฉันได้ การอนุญาตของฉันคือ 400 ฉันคิดว่าไม่เป็นไร
HoKy22

2
ขอบคุณมากสำหรับความช่วยเหลือฉันพบปัญหาจากคำถามล่าสุดที่คุณถาม ดูเหมือนว่าฉันจะสามารถ ssh หรือ SCP ไม่ใช่สองคนด้วยกัน
HoKy22

ขอบคุณสำหรับคำใบ้ hellokitty22 ฉันเปิดเทอร์มินัลสองอันสำหรับหนึ่ง ssh และอีกอันสำหรับ scp ด้วย
donebizkit

0

ก่อนอื่นคุณควรเปลี่ยนโหมดของ.pemไฟล์จากโหมดอ่านและเขียนเป็นโหมดอ่านอย่างเดียว สิ่งนี้สามารถทำได้เพียงแค่คำสั่งเดียวในเทอร์มินัลsudo chmod 400 your_public_key.pem


0

ฉันลองคำแนะนำทั้งหมดที่กล่าวถึงข้างต้นและไม่มีอะไรทำงาน ฉันยกเลิกอินสแตนซ์ปัจจุบันเปิดใช้อีกอันหนึ่งและทำซ้ำกระบวนการที่แน่นอนเดียวกัน คราวนี้ไม่มีปัญหา บางครั้งอาจเป็นความผิดพลาดของ Ami จากระยะไกล


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 สาธารณะของอินสแตนซ์สาธารณะของคุณ


-1

ฉันจะใช้:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.