scp (สำเนาที่ปลอดภัย) ไปยังอินสแตนซ์ ec2 โดยไม่มีรหัสผ่าน


404

ฉันมีอินสแตนซ์ EC2 ทำงานอยู่ (FreeBSD 9 AMI ami-8cce3fe5) และฉันสามารถใช้ไฟล์คีย์ amazon ที่สร้างโดย amazon ของฉันโดยไม่ต้องใส่รหัสผ่านไม่มีปัญหา

อย่างไรก็ตามเมื่อฉันต้องการคัดลอกไฟล์ไปยังอินสแตนซ์โดยใช้ scp ฉันถูกขอให้ใส่รหัสผ่าน:

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

Password:

ความคิดใด ๆ ที่ทำให้เกิดเหตุการณ์นี้ / จะป้องกันได้อย่างไร?


คุณกำลังใช้ตัวบ่งชี้ที่เหมือนกันสำหรับผู้ใช้และโฮสต์หรือไม่
ลินช์

ฉันไม่แน่ใจว่าฉันเข้าใจความหมายของตัวระบุคุณช่วยอธิบายได้ไหม
Hoff

หากการเชื่อมต่อหนึ่งคุณใช้ที่อยู่ IP และสำหรับการเชื่อมต่ออื่นคุณใช้ชื่อมันจะไม่ทำงาน ฉันเพิ่งเห็นว่าคุณใช้-iตัวเลือกเพื่อระบุตัวตนของคุณ อาจเป็นได้ว่าคุณควรแสดงคำสั่งที่คุณใช้ในการเข้าสู่ระบบด้วย ssh
ลินช์

ขอบคุณประชาทัณฑ์คิดออก!
Hoff

คำตอบ:


804

ฉันคิดออก ฉันมีข้อโต้แย้งในลำดับที่ไม่ถูกต้อง งานนี้:

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

14
ผู้ที่เข้าใจวิธีการเชื่อมต่อกับ ec2 ผ่าน ssh เพียงแค่เปลี่ยนsshคำสั่งscpและเพิ่มชื่อไฟล์หลังจากไฟล์ pem
Claudio Santos

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 ที่สั้นและง่ายกว่า!
บร็อค

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) แต่จำเป็นต้องลบ (/) ออกจากจุดสิ้นสุดของเส้นทางระยะไกล ตัวอย่างของคุณใช้ได้กับฉันขอบคุณมาก ๆ
Abbas

35

ฉันใช้คำสั่งด้านล่างเพื่อคัดลอกจาก 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สำหรับidentity_file


8

สมมติว่าไฟล์ pem ของคุณและ somefile.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: ~ / ~ / เดสก์ท็อป / ในกรณีที่คุณต้องการถ่ายโอนไฟล์จากเซิร์ฟเวอร์ไปยังท้องถิ่น
Yatender Singh

2
ขอบคุณฉันได้ "ปฏิเสธการเข้าถึง" :/ในตอนท้าย แต่ใช้:~/งานได้
cardamom

ใช่เพราะ: / เป็นโฟลเดอร์หลักและ: ~ / เป็นโฟลเดอร์ผู้ใช้ดังนั้นหากคุณเป็นผู้ใช้หลักแล้ว: / หรือ: ~ / จะทำงานได้ทุกอย่างและหากคุณไม่ใช่ผู้ใช้หลักเท่านั้น: ~ / คุณต้องใช้
Yatender Singh

3

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

มันจะเป็นประโยชน์กับพวกคุณทุกคนมาก


2

ฉันhadoopec2cluster.pemไฟล์เป็นเพียงคนเดียวในไดเรกทอรีบน mac ท้องถิ่นของฉันไม่สามารถ scp มัน AWS scp -i hadoopec2cluster.pem hadoopec2cluster.pem ubuntu@serverip:~ใช้

คัดลอก hadoopec2cluster.pem ไปที่ hadoopec2cluster_2.pem แล้ว scp -i hadoopec2cluster.pem hadoopec2cluster_2.pem ubuntu@serverip:~แล้ว Voila!


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