กำลังพยายาม SSH ไปสู่อินสแตนซ์ Amazon Ec2 - ข้อผิดพลาดในการอนุญาต


745

นี่อาจเป็นคำถามง่าย ๆ สำหรับบางคน :)

ฉันได้สร้างอินสแตนซ์ linux ใหม่ใน Amazon EC2 และเป็นส่วนหนึ่งของที่ดาวน์โหลดไฟล์. pem เพื่ออนุญาตให้ฉันใช้ SSH

เมื่อฉันพยายาม ssh ด้วย:

ssh -i myfile.pem <public dns>

ฉันได้:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).

ติดตามโพสต์นี้ฉันพยายาม chmod +600 ไฟล์ pem แต่ตอนนี้เมื่อฉัน ssh ฉันเพิ่งได้รับ:

Permission denied (publickey).

ฉันกำลังทำอะไรผิดพลาดที่โรงเรียน ไฟล์. pem อยู่ในโฟลเดอร์โฮมของฉัน (ใน osx) การอนุญาตมีลักษณะดังนี้:

-rw-------@   1 mattroberts  staff    1696 19 Nov 11:20 amazonec2.pem

2
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณใช้ไฟล์ pem ผิด
ราหุลประสาทเมื่อ

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

ฉันใช้ Windows กับ WinSCP มีอะไรจะทำอย่างไรกับการchmod 400 myfile.pemที่จะใช้myfile.ppkสร้างโดย PuTTYgen จากไฟล์ pem
Chetabahana

ข้อผิดพลาดนี้สามารถเกิดขึ้นได้เมื่อคุณไม่ได้ลงชื่อเข้าใช้ด้วยผู้ใช้ที่ถูกต้อง;)
andrea06590

คำตอบ:


1460

ปัญหาเกิดขึ้นกับตัวดัดแปลงที่ผิดพลาดในไฟล์

แก้ไขได้อย่างง่ายดายโดยการดำเนินการ -

chmod 400 mykey.pem

นำมาจากคำแนะนำของ Amazon -

ไฟล์คีย์ของคุณต้องไม่สามารถดูได้แบบสาธารณะเพื่อให้ SSH ทำงานได้ ใช้คำสั่งนี้หากจำเป็น: chmod 400 mykey.pem

400 ปกป้องโดยการอ่านอย่างเดียวและสำหรับเจ้าของเท่านั้น


3
ขอบคุณมาก! chmod 400 ทำอะไรได้บ้าง เพื่อ mykey.pem?
Costa

19
400 ปกป้องโดยการอ่านอย่างเดียวและสำหรับเจ้าของเท่านั้น
Kof

1
หลังจากนี้ฉันได้รับ "คำเตือน: ไฟล์ข้อมูลประจำตัวไม่สามารถเข้าถึงได้ blabla.pem: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" เมื่อฉันทำ ssh -l USERNAME_HERE -i ssh -i .ssh / yourkey.pem public-ec2-host
coolcool1994

3
คำสั่งนี้ + ssh -i YOUR_PEM_FILE.pem ec2-user@YOUR_IPแก้ไขปัญหา บางทีนี่อาจเป็นคำตอบที่ยอมรับได้ ...
c4k

1
ฉันจะเรียกใช้หน้าต่างเดิมได้อย่างไร
Ahsan Mukhtar

262

คุณน่าจะใช้ชื่อผู้ใช้ที่ไม่ถูกต้องในการเข้าสู่ระบบ:

  • ภาพ Ubuntu ส่วนใหญ่มีผู้ใช้ ubuntu
  • AMI ของ Amazon คือ ec2-user
  • ภาพ Debian ส่วนใหญ่จะมีrootหรือadmin

ในการเข้าสู่ระบบคุณต้องปรับคำสั่ง ssh ของคุณ:

ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-host

HTH


30
หรือ ssh -i key.pem ubuntu @ servername
jsh

43
ข้อความแสดงข้อผิดพลาดระบุไว้ทั้งหมด: ไฟล์ใบรับรอง. pem ไม่ได้รับการป้องกันเพียงพอ ทำ chmod 400 xyz.pem ตามที่แนะนำด้านล่าง
allprog

1
@allprog สำหรับฉันเพียงแค่นี้ทำให้เกิดการพูดPermission denied (publickey).และไม่มีอะไรอื่น ...
ซีเรีย Kocharyan

1
ฉันพบปัญหา - ฉันไม่ได้ใช้รหัสเดียวกับที่ฉันสร้างอินสแตนซ์กับ
Aram Kocharyan

12
นี่ไม่ใช่วิธีแก้ไข - การอนุญาตไฟล์ในไฟล์คีย์ที่ดาวน์โหลดคือ 844 โดยค่าเริ่มต้น ควรเป็น 400 chmod 500 <path_to_pem_file>ควรทำ
Elad Meidar

62

ฉันรู้ว่านี่มันสายไปแล้วสำหรับเกม ... แต่มันใช้ได้กับฉันเสมอ :

ขั้นตอนที่ 1

ssh-add ~/.ssh/KEY_PAIR_NAME.pem

ขั้นตอนที่ 2 เพียง ssh ใน :)

ssh user_name@<instance public dns/ip>

เช่น

ssh ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com

หวังว่าสิ่งนี้จะช่วยให้ใครบางคน


"ssh-add" เหมือนกับการคัดลอกไฟล์ * .pem ไปยังโฟลเดอร์ ~ / .ssh หรือไม่
アレックス

1
>> เพียงแค่คัดลอกไฟล์ * .pem ไปยังโฟลเดอร์ ~ / .ssh ไม่เหมือนกันคุณต้องเพิ่มในโฟลเดอร์แล้วเรียกใช้คำสั่ง ssh-add
super_p

ช้ามากในเกม แต่เพื่อเพิ่มความกระจ่าง ... 1. เพิ่มไฟล์. pem ไปยังไดเรกทอรี ~ / .ssh (สร้างหากจำเป็น) 2. ใช้คำสั่ง ssh-add เพื่อเพิ่มข้อมูลประจำตัวในการรับรองความถูกต้อง ตัวแทน; นี่หมายความว่าไม่ต้องระบุไฟล์. pem เมื่อใช้ ssh
Ian Atkin

2
หลังจาก ssh-add ¬ / .ssh / key.pem; การรับข้อผิดพลาดไม่สามารถเปิดการเชื่อมต่อกับตัวแทนการตรวจสอบความถูกต้องของคุณ ssh-agent -sรายงานeval SSH_AGENT_PID = 3409; SSH เพิ่มให้ข้อผิดพลาดเช่นเดียวกับข้างต้น ......... ความช่วยเหลือใด ๆ ที่นี่นะ
ทาเร็ค

ว้าวที่จะสะดวกมากสำหรับการเชื่อมต่อ VPS ของฉันในอนาคต คู่ขอบคุณ :)
อาห์หมัด Mushtaq

36

โอเคมนุษย์สิ่งเดียวที่ใช้ได้ผลสำหรับฉันคือ:

  1. เปลี่ยนการอนุญาตของคีย์

    chmod 400 mykey.pem

  2. ตรวจสอบให้แน่ใจว่าได้ลงชื่อเข้าใช้ด้วยผู้ใช้ ec2 และที่อยู่ ec2-99 ... ที่ถูกต้อง ที่อยู่ ec2-99 อยู่ที่ด้านล่างของคอนโซล aws เมื่อคุณเข้าสู่ระบบและดูอินสแตนซ์ของคุณในรายการ

    ssh -i mykey.pem ec2-user@ec2-99-99-99-99.compute-1.amazonaws.com


ฉันไม่พบที่อยู่ ec2-99 คุณช่วยฉันได้ไหม?
Adil Malik

1
chmod 400 mykey.pem ล็อกอินด้วย ubuntu ดังต่อไปนี้: ssh -i mykey.pem ubuntu@SERVER.amazonaws.com
Gal Bracha

27

ลองดูที่บทความนี้ คุณไม่ได้ใช้ DNS สาธารณะ แต่เป็นแบบฟอร์ม

ssh -i your.pem root@ec2-XXX-XXX-XXX-XXX.z-2.compute-1.amazonaws.com

ที่ชื่อจะปรากฏบนแผง AMI ของคุณ


ขอบคุณสำหรับบทความที่มีประโยชน์มาก!
Matt Roberts

การปรับปรุงเล็กน้อย: เมื่อพยายามเข้าสู่ระบบในฐานะ root aws แสดงข้อความต่อไปนี้: "โปรดลงชื่อเข้าใช้ด้วยชื่อผู้ใช้ ec2 แทนที่จะเป็นผู้ใช้รูท"
Andre Schweighofer

ฉันจะทราบได้อย่างไรว่า ec2-XXX-XXX-XXX-XXX.z-2.compute-1.amazonaws.com ของฉันคืออะไร
アレックス

คอนโซลการจัดการ> EC2> อินสแตนซ์และเลือกอินสแตนซ์ของคุณ
Renick

'root @' คือสิ่งที่ทุกคนหายไปจากคำตอบนี้ ขอความช่วยเหลือ! นั่นและ chmod
lordB8r


13

ในหน้าต่างคุณสามารถไปที่คุณสมบัติของไฟล์ pem และไปที่แท็บความปลอดภัยจากนั้นกดปุ่มล่วงหน้า

ลบการสืบทอดและสิทธิ์ทั้งหมด จากนั้นให้การควบคุมเต็มรูปแบบ หลังจาก SSL ทั้งหมดจะไม่ให้ข้อผิดพลาดเดียวกันอีกครั้ง


7

ฉันรู้ว่าคำถามนี้ได้รับการตอบแล้ว แต่สำหรับผู้ที่ได้ลองพวกเขาทั้งหมดและคุณยังคงได้รับ "ปฏิเสธสิทธิ์ (publickey)" ที่น่ารำคาญ ลองรันคำสั่งของคุณด้วย SUDO แน่นอนว่านี่เป็นวิธีการแก้ปัญหาชั่วคราวและคุณควรกำหนดสิทธิ์อย่างถูกต้อง แต่อย่างน้อยก็จะช่วยให้คุณระบุว่าผู้ใช้ปัจจุบันของคุณไม่ได้ทำงานด้วยสิทธิ์ที่คุณต้องการ (ตามที่คุณคิด)

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com

เมื่อคุณทำสิ่งนี้คุณจะได้รับข้อความเช่นนี้:

Please login as the user "ec2-user" rather than the user "root"

ซึ่งยังมีเอกสารเบาบาง ในกรณีนี้ให้ทำดังนี้

sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user

และคุณจะได้รับความรุ่งโรจน์:

   __|  __|_  )
   _|  (     /   Amazon Linux AMI
  ___|\___|___|

2
ขอบคุณ .. ฉันยังคงได้รับข้อผิดพลาดหลังจากลองตัวเลือกทั้งหมดที่กล่าวถึงข้างต้น ใช้ ssh กับ sudo ได้ผลสำหรับฉัน
Gursharan Singh

ฉันต้องการที่จะรู้ว่าทำไมฉันต้องทำงานใน sudo ฉันลอง chmod 400 xyz.pem แต่มันก็ไม่ได้ช่วย
ซามูเอล Dominguez

6

ในเทอร์มินัล Mac การทำ "chmod 400 xyz.pem" ไม่ได้ช่วยฉันมันเก็บไว้ว่าการอนุญาตถูกปฏิเสธ สำหรับผู้ใช้ Ubuntu ฉันอยากจะแนะนำ

  1. ssh-add xyz.pem
  2. ssh -i xyz.pem ubuntu@ec2-54-69-172-118.us-west-2.compute.amazonaws.com (สังเกตว่าผู้ใช้คืออูบุนตู)

4

คีย์ SSH และแนวทางปฏิบัติที่ดีที่สุดในการอนุญาตไฟล์:

  • ไดเรกทอรี. ssh - 0700 (เฉพาะเจ้าของเท่านั้น)
  • ไพรเวตคีย์ / ไฟล์. pem - 0400 (เจ้าของเท่านั้นอ่านได้)
  • พับลิกคีย์ / ไฟล์. pub - 0600 (อ่านและเขียนโดยเจ้าของเท่านั้น)

    chmod XXXX file/directory


3

ssh -i /.pem user @ host-machine-IP

ฉันคิดว่าเป็นเพราะคุณป้อนข้อมูลรับรองไม่ถูกต้องหรือคุณใช้รหัสสาธารณะแทนรหัสส่วนตัวหรือสิทธิ์พอร์ตของคุณเปิดให้ ALL to ssh สิ่งนี้ไม่ดีสำหรับ Amazon


3

ทางเลือกในการเข้าสู่ระบบโดยใช้ PuTTY มันดี แต่ต้องไม่กี่ก้าว

  1. รับ. pem ของคุณที่สร้างขึ้นเมื่อคุณสร้างอินสแตนซ์ EC2 ครั้งแรก
  2. แปลงไฟล์. pem .ppk โดยใช้PuttyGenเนื่องจาก PuTTY ไม่อ่าน. pem
  3. เปิด PuTTY และป้อนชื่อโฮสต์ของคุณซึ่งเป็นชื่อผู้ใช้อินสแตนซ์ของคุณ + DNS สาธารณะ (เช่น ubuntu@ec2-xxx-xxx-xxx-xxx-xxx.region.compute.amazonaws.com) ไม่ใช่ชื่อผู้ใช้บัญชี AWS ของคุณ
  4. จากนั้นไปที่การเชื่อมต่อ> SSH> รับรองความถูกต้อง จากนั้นเพิ่ม. pkkของคุณไฟล์.คลิกที่หมวดที่มันว่า"ไฟล์กุญแจส่วนตัวสำหรับการตรวจสอบ" "ไฟล์กุญแจส่วนตัวสำหรับการตรวจสอบ"
  5. คลิก Open และคุณจะสามารถสร้างการเชื่อมต่อได้ทันที

ฉันใช้ PuTTY 0.66 ใน Windows


ใช้งานได้ แต่มีวิธีทำให้การเชื่อมต่อ ssh ทำงานจากบรรทัดคำสั่งโดยตรงหรือไม่
Ariel

3

นอกเหนือจากคำตอบอื่น ๆ นี่คือสิ่งที่ฉันทำเพื่อให้การทำงาน:

  • คัดลอกคีย์ไปยังโฟลเดอร์. ssh หากคุณยังไม่มี:

cp key.pem ~/.ssh/key.pem

  • ให้สิทธิ์ที่เหมาะสมกับคีย์

chmod 400 ~/.ssh/key.pem

eval `ssh-agent -s` ssh-add

  • จากนั้นเพิ่มรหัส

ssh-add ~/.ssh/key.pem

ตอนนี้คุณควรจะสามารถ ssh EC2 (:


2

ทำ chmod 400 yourkeyfile.pem หากอินสแตนซ์ของคุณคือ Amazon linux ให้ใช้ ssh -i yourkeyfile.pem ec2-user @ ip สำหรับ ubuntu ssh -i yourkeyfile.pem ubuntu @ ip สำหรับ centos ssh -i yourkeyfile.pem centos @ ip


2

ข้อผิดพลาดนี้มีเหตุผลสามประการ

  1. คุณกำลังใช้รหัสผิด
  2. รหัสของคุณไม่มีสิทธิ์ที่ถูกต้อง คุณต้องเปลี่ยนเป็น 400
  3. คุณใช้ผู้ใช้ผิด ภาพ Ubuntu มีผู้ใช้Ubuntu , AMI ของ Amazon เป็นภาพผู้ใช้ ec2และภาพ debian มีทั้งrootหรือadmin

2

ปัญหาสำหรับฉันคือไฟล์. pem ของฉันอยู่ในพาร์ทิชัน NTFS ของฉัน ฉันย้ายมันไปยังพาร์ติชัน linux ของฉัน (ext4)

ให้สิทธิ์ที่จำเป็นโดยการเรียกใช้:

chmod 400 my_file.pem

และมันก็ใช้งานได้


2

ดูคำอธิบายโพสต์ของคุณฉันรู้สึกว่ามี 2 ข้อผิดพลาดที่คุณทำ: -

  1. ตั้งค่าสิทธิ์ที่ถูกต้องสำหรับคีย์ส่วนตัว คำสั่งด้านล่างจะช่วยคุณในการตั้งค่าการอนุญาตให้ใช้ไฟล์ที่ถูกต้อง

    chmod 0600 mykey.pem

  2. ผู้ใช้ EC2 ผิดคุณกำลังพยายามที่จะเข้าสู่ระบบ

    ดูล็อกการดีบักของคุณฉันคิดว่าคุณได้วางอินสแตนซ์ Amazon linux แล้ว ec2-userผู้ใช้เริ่มต้นสำหรับประเภทเช่นที่เป็น หากอินสแตนซ์นั้นเป็นอูบุนตูแล้วผู้ใช้เริ่มต้นของคุณจะเป็นubuntuเช่นนั้น

    ssh -i privatekey.pem default_ssh_user@server_ip

Note:
   For an Amazon Linux AMI, the default user name is ec2-user.

   For a Centos AMI, the default user name is centos.

   For a Debian AMI, the default user name is admin or root.

   For a Fedora AMI, the default user name is ec2-user or fedora.

   For a RHEL AMI, the default user name is ec2-user or root.

   For a SUSE AMI, the default user name is ec2-user or root.

   For an Ubuntu AMI, the default user name is ubuntu.

   Otherwise, if ec2-user and root don't work, check with the AMI provider.

แหล่งที่มา: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html


1

รายการตรวจสอบ:

  1. คุณใช้ไฟล์. pem คีย์ส่วนตัวใช่ไหม?

  2. มีการตั้งค่าการอนุญาตอย่างถูกต้องหรือไม่? (AMIs แบรนด์ Amazon ของฉันใช้ได้กับ 644 แต่ Red hat ต้องมีอย่างน้อย 600 หรือ 400 ไม่ทราบเกี่ยวกับ Ubuntu)

  3. คุณใช้ชื่อผู้ใช้ที่ถูกต้องในสาย ssh ของคุณหรือไม่ Amazon-branded = "ผู้ใช้ ec2", Red Hat = "root", Ubuntu = "ubuntu" ผู้ใช้สามารถระบุได้ว่า "ssh -i pem usename @ hostname" หรือ "ssh -l ชื่อผู้ใช้ -i pem ชื่อโฮสต์"


1

เพียงแค่เปลี่ยนการอนุญาตของไฟล์ pem เป็น 0600 อนุญาตเฉพาะสำหรับผู้ใช้ที่ได้รับอนุญาตและมันจะทำงานเหมือนมีเสน่ห์

sudo chmod 0600 myfile.pem

และจากนั้นลอง ssh มันจะทำงานได้อย่างสมบูรณ์

ssh -i myfile.pem <<ssh_user>>@<<server>>

1

การอนุญาตเริ่มต้นจะไม่อนุญาตให้ใช้คีย์ pem คุณเพียงแค่ต้องเปลี่ยนการอนุญาต:

chmod 400 xyz.pem

และถ้าเช่น Ubuntu แล้วเชื่อมต่อโดยใช้:

ssh -i xyz.pem ubuntu@ec2-youraws.amazonaws.com


1

ไฟล์คีย์ไม่สามารถดูได้แบบสาธารณะดังนั้นให้ใช้สิทธิ์ 400

chmod 400 keyfile.pem

หากคำสั่งดังกล่าวแสดงการใช้งานที่ผิดพลาดของสิทธิ์

sudo chmod 400 keyfile.pem

ตอนนี้ ssh เข้าไปในเครื่อง ec2 หากคุณยังคงประสบปัญหาใช้ผู้ใช้ec2

ssh -i keyfile.pem ec2-user@ec2-12-34-56-78.compute-1.amazonaws.com


1

.400 ปกป้องด้วยการทำให้อ่านได้เฉพาะสำหรับเจ้าของเท่านั้น
คุณสามารถหาคำตอบได้จากคู่มือ ASW

chmod 400 yourPrivateKey.pem

ป้อนคำอธิบายรูปภาพที่นี่


0

ต่อไปนี้เป็นขั้นตอนง่าย ๆ สำหรับผู้ใช้ Linux ในการเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ไฟล์. pem:

ขั้นที่ 1: ไปยังตำแหน่งของไฟล์ pem และคัดลอกไปที่บ้าน. ssh ตำแหน่ง

cp example.pem ~/.ssh/example.pem

ขั้นตอนที่ 2: เปลี่ยนการอนุญาต

chmod 400 ~/.ssh/example.pem

ขั้นตอนที่ 3: เรียกใช้คำสั่งต่อไปนี้

ssh -i ~/.ssh/example.pem ec2-user@host.com

เนื่องจากคำสั่งนี้ยาวเกินไปดังนั้นคุณควรสร้างนามแฝงของสิ่งนี้โดยใช้คำสั่งต่อไปนี้:

 vim ~/.bashrc

เขียนคำสั่งเดียวกันในลักษณะต่อไปนี้ในที่สุด

alias sshConnect='ssh -i ~/.ssh/example.pem ec2-user@host.com'

ตอนนี้รีสตาร์ทระบบของคุณและใช้sshConnectเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ของคุณ


0

มันเป็นเพียงปัญหาการอนุญาตด้วยคีย์ aws pem ของคุณ

เพียงเปลี่ยนการอนุญาตของคีย์ pem เป็น 400 โดยใช้คำสั่งด้านล่าง

chmod 400 pemkeyname.pem

หากคุณไม่ได้รับอนุญาตให้เปลี่ยนการอนุญาตของไฟล์คุณสามารถใช้ sudo เหมือนคำสั่งด้านล่าง

sudo chmod 400 pemkeyname.pem

ฉันหวังว่ามันจะทำงานได้ดี


0

ฉันเห็นเหตุผลสองประการที่อยู่เบื้องหลังปัญหานี้

1) รหัสการเข้าถึงไม่ได้รับอนุญาตที่ถูกต้อง คีย์ pem ที่มีการอนุญาตเริ่มต้นจะไม่ได้รับอนุญาตให้ทำการเชื่อมต่อที่ปลอดภัย คุณเพียงแค่ต้องเปลี่ยนการอนุญาต:

chmod 400 xyz.pem

2) ตรวจสอบว่าคุณได้ลงชื่อเข้าใช้ด้วยข้อมูลรับรองผู้ใช้ที่เหมาะสมหรือไม่ มิฉะนั้นใช้ sudo ขณะเชื่อมต่อ

sudo ssh -i {keyfile} ec2-user @ {ที่อยู่ ip ของรีโมตโฮสต์}


0

คีย์ของคุณต้องไม่สามารถดูได้แบบสาธารณะเพื่อให้ SSH ทำงานได้ ใช้คำสั่งนี้หากจำเป็น:

chmod 400 Interview-apps.pem

Connect to your instance using its Public DNS:

ec2-**-***-***-***.us-west-2.compute.amazonaws.com

ตัวอย่าง:

ssh -i "Interview-apps.pem" ec2-user@ec2-**-***-***-***.us-west-2.compute.amazonaws.com

0

โปรดเพิกเฉยคำตอบนี้หากคุณไม่เกี่ยวข้อง แต่จากประสบการณ์ของฉันฉันเห็นคนที่มีปัญหาPermission denied (publickey)เพราะพวกเขาเพียงวางกุญแจสาธารณะของพวกเขา (บนเครื่องเป้าหมาย) โดยไม่มีตัวอักษรตัวแรก !

สิ่งนี้เกิดขึ้นเมื่อใช้เสียงเรียกเข้าเพื่อแก้ไข (วาง) คีย์ เนื่องจากvimโดยค่าเริ่มต้นจะเปิดในโหมดคำสั่ง (ไม่ใช่ในโหมดแทรก ) การวางคีย์โดยไม่เปลี่ยนเป็นโหมดแทรก (เช่นi) จะส่งผลให้ข้ามsตัวอักษรตัวแรกเช่นแทน

ssh-rsa <key>

คุณสิ้นสุดการวาง

sh-rsa <key>

ดังนั้นก่อนที่จะลองวิธีการแก้ปัญหาอื่น ๆ ดูว่าคุณได้วางกุญแจของคุณอย่างถูกต้อง ! กล่าวคือ

cat ~/.ssh/id_rsa.pub

เฉพาะในกรณีที่คุณมั่นใจให้ทำตามขั้นตอนต่อไป พยายามที่จะ ssh ในโหมด verbose (เช่นธง-v) อาจนำคุณไปสู่ปัญหาที่เกิดขึ้นจริง:

ssh -v -i <private_key> <name>@<ip> -p <port>

ในฐานะที่เป็นบันทึกด้านข้างตามที่ได้รับการกล่าวถึงแล้วโดยคนอื่น ๆ ในกรณีส่วนใหญ่เริ่มต้นเอเจนต์ ssh ที่ว่างเปล่า(โปรแกรมที่เก็บคีย์ของคุณในหน่วยความจำ) และการเพิ่มคีย์ของคุณควรแก้ไขปัญหา:

ssh-agent bash
ssh-add <private_key>

-1

สิ่งที่แก้ไขได้สำหรับฉันคือการย้ายไฟล์. pem ภายในไดเรกทอรีแอพ ซูบอกว่า fooapp เป็นชื่อแอพของฉัน ฉันวางมันลงตรงนั้น


-2

บางครั้งอาจมีข้อผิดพลาดในโฟลเดอร์ ฉันไม่รู้ว่าทำไม...

คุณสามารถเปลี่ยนโฟลเดอร์และลองอีกครั้ง ตัวอย่างเช่นคุณสามารถทดสอบในโฟลเดอร์ปกติ (เดสก์ท็อปดาวน์โหลดและอื่น ๆ )

ฉันลองวิธีนี้และใช้งานได้


-2

ข้อผิดพลาดนี้เป็นเพียงเพราะได้รับอนุญาต

เพียงแค่ให้สิทธิ์ 400

#chmod 400 pemfilepath


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