ปฏิเสธการอนุญาต (publickey) เมื่อ SSH การเข้าถึงอินสแตนซ์ Amazon EC2 [ปิด]


355

ฉันต้องการใช้อินสแตนซ์ Amazon ec2 ของฉัน แต่พบข้อผิดพลาดต่อไปนี้:

Permission denied (publickey).

ฉันสร้างคู่คีย์ของฉันและดาวน์โหลดไฟล์. pemแล้ว

ได้รับ:

chmod  600 pem file.

จากนั้นคำสั่งนี้

ssh -i /home/kashif/serverkey.pem  ubuntu@ec2-54-227-242-179.compute-1.amazonaws.com

แต่มีข้อผิดพลาดนี้:

Permission denied (publickey)

นอกจากนี้ฉันจะเชื่อมต่อกับ filezilla เพื่ออัพโหลด / ดาวน์โหลดไฟล์ได้อย่างไร


1
เกี่ยวกับคำถามที่ 2 ของคุณเชื่อมต่อกับ filezilla เพื่ออัปโหลด / ดาวน์โหลดไฟล์ลองดูคำแนะนำทีละขั้นตอน - y2u.be/e9BDvg42-JI
Yasitha Chinthaka

2
คุณแน่ใจหรือว่าคุณไม่ได้ใช้ "sudo chmod 600 ไฟล์ pem" นี้จะทำให้เกิดข้อผิดพลาดนี้และหมายความว่าคุณจะต้องใช้ sudo ก่อน SSH
felbus

นอกจากนี้สำหรับบาง Debian OS adminชื่อผู้ใช้ อย่างน้อยสำหรับรุ่น 6.5 และ 7.0
นักพัฒนา

2
หากชื่อผู้ใช้ของคุณคือec2-userให้แน่ใจว่าคุณไม่ได้ใช้ec2_user:)
grisaitis

2
ตรวจสอบให้แน่ใจว่าผู้ใช้ที่คุณพยายามเชื่อมต่อมีรหัสอยู่ในรายการของเขา / เธอ $HOME/.ssh/authorized_keysไฟล์
ILMostro_7

คำตอบ:


589

ข้อความแสดงข้อผิดพลาดนี้หมายความว่าคุณไม่สามารถตรวจสอบสิทธิ์ได้

นี่คือสาเหตุทั่วไปที่อาจทำให้:

  1. กำลังพยายามเชื่อมต่อกับคีย์ผิด คุณแน่ใจหรือว่าอินสแตนซ์นี้กำลังใช้รหัสคู่นี้
  2. กำลังพยายามเชื่อมต่อกับชื่อผู้ใช้ที่ไม่ถูกต้อง ubuntuเป็นชื่อผู้ใช้สำหรับการกระจาย AWS อูบุนตูตาม แต่ในบางคนอื่น ๆ มันec2-user(หรือadminในบาง Debians ตามคำตอบ Bogdan Kulbida ของ) (นอกจากนี้ยังสามารถroot, fedoraดูด้านล่าง)
  3. กำลังพยายามเชื่อมต่อกับโฮสต์ที่ไม่ถูกต้อง นั่นเป็นโฮสต์ที่ถูกต้องที่คุณพยายามเข้าสู่ระบบใช่หรือไม่

โปรดทราบว่า1.จะเกิดขึ้นเช่นกันหากคุณทำ/home/<username>/.ssh/authorized_keysไฟล์ในอินสแตนซ์ EC2 ของคุณยุ่งเหยิง

เกี่ยวกับ2.ข้อมูลเกี่ยวกับชื่อผู้ใช้ที่คุณควรใช้มักจะขาดจากคำอธิบายภาพ AMI แต่คุณสามารถพบบางอย่างในเอกสาร AWS EC2 หัวข้อย่อย4.: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

ใช้คำสั่ง ssh เพื่อเชื่อมต่อกับอินสแตนซ์ คุณจะระบุไฟล์ไพรเวตคีย์ (.pem) และชื่อผู้ใช้ @ public_dns_name สำหรับ Amazon Linux ชื่อผู้ใช้คือ ec2-user สำหรับ RHEL5 ชื่อผู้ใช้เป็นรากหรือทั้งEC2 ผู้ใช้ สำหรับ Ubuntu ชื่อผู้ใช้อูบุนตู สำหรับ Fedora ชื่อผู้ใช้เป็นทั้งฟางหรือEC2 ผู้ใช้ สำหรับ SUSE Linux ชื่อผู้ใช้คือรูท มิฉะนั้นถ้าผู้ใช้ ec2 และรูทไม่ทำงานให้ตรวจสอบกับผู้ให้บริการ AMI ของคุณ

ท้ายที่สุดโปรดทราบว่ามีเหตุผลอื่น ๆ อีกมากมายที่ทำให้การตรวจสอบสิทธิ์ล้มเหลว SSH มักจะค่อนข้างชัดเจนเกี่ยวกับสิ่งที่ผิดพลาดถ้าคุณสนใจที่จะเพิ่ม-vตัวเลือกในคำสั่ง SSH ของคุณและอ่านผลลัพธ์ตามที่อธิบายไว้ในคำตอบอื่น ๆ อีกมากมายสำหรับคำถามนี้


2
ฉันไม่คิดว่าอินเทอร์เฟซให้คุณเพิ่มคีย์ในอินสแตนซ์ที่กำลังทำงานดังนั้นคุณจะต้องเริ่มใหม่หากคุณทำคีย์หายไปจากอินสแตนซ์ที่กำลังทำงานอยู่
Thibault D.

81
# 2 แก้ไขปัญหาของฉันขอบคุณ!
rckehoe

4
คำตอบนี้แก้ไขได้สำหรับฉัน ชื่อผู้ใช้เริ่มต้นสำหรับอินสแตนซ์นี้คือ "ubuntu" ไม่ใช่ผู้ใช้ ec2 ตามที่ระบุไว้ในคู่มือ AWS ลองใช้'ec2-user@_your_EC2_IP.amazonaws.com
emf

7
เกี่ยวกับ # 1 คีย์ผิดการเพิ่ม -v (verbose) ลงในบรรทัดคำสั่ง ssh แสดงให้ฉันเห็นว่ามันพยายามใช้คีย์ใดและนั่นทำให้ฉันรู้ว่าไม่ได้ลองใช้กุญแจที่ฉันสร้างขึ้นเพราะฉันตั้งชื่ออย่างอื่นนอกเหนือจาก id_rsa หรือ id_dsa
KC Baltz

3
"อูบุนตูเป็นชื่อผู้ใช้สำหรับการแจกจ่าย AWS ที่ใช้อูบุนตู" นี่คือสิ่งที่ฉันได้รับ เคยชินกับผู้ใช้ ec2 เพียงสันนิษฐานว่าเป็นชื่อผู้ใช้เสมอ
เนทรีด

48

ในกรณีนี้ปัญหาเกิดขึ้นจากการจับคู่คีย์ที่หายไป เกี่ยวกับเรื่องนี้:

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

คุณสามารถทำตามขั้นตอนเหล่านี้:

  1. การเข้าถึง AWS Management Console
  2. เปิดElastic Beanstalkแท็บ
  3. เลือกแอปพลิเคชันของคุณจากแอปพลิเคชันทั้งหมดแท็บ
  4. จากเมนูด้านซ้ายให้เลือก กำหนดค่า
  5. คลิกที่อินสแตนซ์เกียร์
  6. ในรูปแบบเซิร์ฟเวอร์ให้ตรวจสอบอินพุตEC2 คีย์การจับคู่และเลือกการจับคู่คีย์ใหม่ของคุณ คุณอาจต้องรีเฟรชรายการเพื่อที่จะเห็นคู่กุญแจใหม่ที่คุณเพิ่งสร้างขึ้น
  7. บันทึก
  8. Elastic Beanstalk จะสร้างอินสแตนซ์ใหม่ให้คุณซึ่งเชื่อมโยงกับคู่ของคีย์ใหม่

โดยทั่วไปจำไว้ว่าคุณต้องอนุญาตให้อินสแตนซ์ EC2 ของคุณยอมรับการรับส่งข้อมูล SSH ขาเข้า

ในการทำเช่นนี้คุณต้องสร้างกฎเฉพาะสำหรับกลุ่มความปลอดภัยของอินสแตนซ์ EC2 ของคุณ คุณสามารถทำตามขั้นตอนเหล่านี้

  1. เข้าถึง AWS Management Console
  2. เปิดแท็บ EC2
  3. จากรายการอินสแตนซ์เลือกอินสแตนซ์ที่คุณสนใจ
  4. ในแท็บคำอธิบายให้ดูชื่อกลุ่มความปลอดภัยที่อินสแตนซ์ของคุณใช้อยู่
  5. อีกครั้งในแท็บคำอธิบายคลิกที่ดูกฎและตรวจสอบว่ากลุ่มความปลอดภัยของคุณมีกฎสำหรับปริมาณการใช้งาน ssh ขาเข้าที่พอร์ต 22
  6. ถ้าไม่ใช่ในเครือข่ายและความปลอดภัยให้เลือกกลุ่มความปลอดภัย
  7. เลือกกลุ่มความปลอดภัยที่อินสแตนซ์ของคุณใช้และคลิกแท็บขาเข้า
  8. ทางด้านซ้ายของแท็บขาเข้าคุณสามารถเขียนกฎสำหรับปริมาณข้อมูลเข้าของ SSH:
    • สร้างกฎใหม่ : SSH
    • ที่มา : ที่อยู่ IPหรือเครือข่ายย่อยที่คุณต้องการเข้าถึงอินสแตนซ์
    • หมายเหตุ : หากคุณต้องการให้สิทธิ์การเข้าถึงอินสแตนซ์ของคุณแบบไม่ จำกัดคุณสามารถระบุ0.0.0.0/0แม้ว่า Amazon จะไม่แนะนำวิธีปฏิบัตินี้
  9. คลิกเพิ่มกฎแล้วใช้การเปลี่ยนแปลงของคุณ
  10. ตรวจสอบว่าตอนนี้คุณสามารถเชื่อมต่อกับอินสแตนซ์ของคุณผ่าน SSH ได้หรือไม่

หวังว่านี่จะช่วยคนที่ช่วยฉันได้


1
ส่วนที่สองของคำตอบของคุณผิด คุณไม่สามารถรับ "ปฏิเสธการอนุญาต (publickey)" หากคุณไม่ได้ตั้งค่าไฟร์วอลล์อย่างถูกต้อง (กลุ่มความปลอดภัย) "การอนุญาตถูกปฏิเสธ (publickey)" เป็นข้อความแสดงข้อผิดพลาดจาก SSH และเป็นข้อพิสูจน์ว่าการกำหนดค่ากลุ่มความปลอดภัยของคุณถูกต้อง คุณจะได้รับ "ssh: เชื่อมต่อกับโฮสต์ xxxx พอร์ต 22: การเชื่อมต่อถูกปฏิเสธ"
Thibault D.

เรื่องสั้นสั้น: ข้อความแสดงข้อผิดพลาดบอกว่าปัญหานี้ไม่เกี่ยวกับการกำหนดค่ากลุ่มรักษาความปลอดภัยของคุณ
Thibault D.

คุณถูก. ส่วนที่สองถือว่าปัญหาประเภทอื่น ฉันแก้ไขโพสต์
Matteo Ceserani

หากคุณทำกุญแจหายฉันคิดว่าวิธีที่เป็นไปได้ในการแก้ปัญหานั้นคือการจับภาพของอินสแตนซ์แล้วเริ่มใหม่ด้วยปุ่มใหม่ ในกรณีนั้น Amazon จะผนวกคีย์สาธารณะใหม่ใน. ssh / authorized_keys ดังนั้นโปรดลบอันเก่าออกในภายหลัง (และระวังที่จะไม่ลบใหม่หรือคุณกลับไปที่ปัญหาแรกของคุณ)
Thibault D.

43

นี่คือวิธีที่ฉันแก้ปัญหา

ssh -i <key> ec2-user@<ec2 ip>

1
ดูเหมือนกุญแจสำคัญสำหรับฉันที่นี่คือที่อยู่ DNS ของโฮสต์และ IP ec2-user @ <ip> ทำงานให้ฉัน
แซค

1
ทางออกเช่นกัน
Tpojka

26

ฉันแก้ไขปัญหาที่เพิ่งเกิดขึ้นsudoก่อนหน้านี้

sudo ssh -i mykey.pem myec2.amazonaws.com

แต่ทางออกที่เหมาะสมคือการเปลี่ยนความเป็นเจ้าของก่อนแล้วจึงเชื่อมต่อในฐานะผู้ใช้ปกติตามที่ Janus Troelsen กล่าวไว้ด้านล่าง ในกรณีของฉันมันจะเป็น:

chown wellington:wellington key.pem

ใช้งานได้สำหรับฉัน (ต้องอัปเดตแพ็กเกจหลังจากนั้น)!
user1429980

4
ทางออกที่เหมาะสมคือเปลี่ยนความเป็นเจ้าของก่อนจากนั้นเชื่อมต่อในฐานะผู้ใช้ปกติ sudo chown wellington:wellington key.pemใช้
Janus Troelsen

มันใช้งานได้ในกรณีของคุณเพราะคุณกำลังพยายามเข้าสู่ระบบนั้นที่ VM ที่ Amazon ซึ่งสนับสนุนผู้ใช้รูท
Taimoor Changaiz

ฉันทำ whoami แล้ว sudo chown user_name_given_by_whoami xxxx.pem
Chirag Purohit

23

ลองใช้ดู

sudo ssh -i mykey.pem ubuntu@<ec2_ip_public_dns>

หรือ

sudo ssh -i mykey.pem ec2-user@<ec2_ip_public_dns>

1
สิ่งนี้ช่วยฉัน ขอบคุณสำหรับทิป! : D
jehzlau

22

สาเหตุที่เป็นไปได้อื่นของข้อผิดพลาดนี้:

เมื่อโฮมไดเร็กทอรีของผู้ใช้สามารถเขียนเป็นกลุ่มได้ผู้ใช้จะไม่สามารถล็อกอินได้

(ทำซ้ำบนอินสแตนซ์ของ Ubuntu)


1
+1 หวังว่าฉันได้อ่านสิ่งนี้ 4 ชั่วโมงที่ผ่านมา !!! แก้ไขปัญหาของฉันเมื่อ rsync -a เขียนทับสิทธิ์ของโฟลเดอร์ผู้ใช้ ec2 ของฉัน
Michael Hobbs

หลังจากฉันได้บันทึกไดเรกทอรีบ้านของฉันฉันไม่สามารถเข้าสู่ระบบได้
Robert Moon

ดังนั้นคุณจะเข้าสู่ระบบบนเครื่องที่ได้รับผลกระทบได้อย่างไรและคุณไม่สามารถเข้าสู่ระบบได้เลย?
PKHunter

แก้ไขสิทธิ์ในไดเรกทอรี / home ทำงานให้ฉันด้วยขอบคุณ! @AlexPetralia ลิงก์ของคุณเสีย = / แต่มีการโพสต์ในฟอรั่ม aws พูดคุยเกี่ยวกับเรื่องนี้: forums.aws.amazon.com/message.jspa?messageID=334402
Liko

ใครบางคนเช่น Alex Petralia หรือ @Michael Hobbs repost (หรือเรียกคืน) วิธีแก้ปัญหานี้?
Jakub Langr

7

สำหรับ ubuntu 12.04 lts micro instance ผมต้องตั้งชื่อผู้ใช้เป็นตัวเลือก

ssh -i pemfile.pem -l ubuntu dns

สิ่งนี้ได้ผลสำหรับฉันฉันประหลาดใจที่มันไม่ใช่ส่วนหนึ่งของเอกสาร aws ที่จะพูดคุยกับผู้ใช้ที่อาจจำเป็น
Ben

7

คุณต้องทำตามขั้นตอนต่อไปนี้:

  1. เปิดไคลเอ็นต์หรือเทอร์มินัล ssh ของคุณหากคุณใช้ Linux
  2. ค้นหาไฟล์คีย์ส่วนตัวของคุณและเปลี่ยนไดเรกทอรีของคุณ
    cd <path to your .pem file>
  3. ดำเนินการคำสั่งด้านล่าง:
    chmod 400 <filename>.pem
    ssh -i <filename>.pem ubuntu@<ipaddress.com>

หากผู้ใช้ไม่ได้ทำงานแล้วลองด้วยubuntuec2-user


5

ฉันต่อสู้กับการอนุญาตเดียวกันปฏิเสธข้อผิดพลาดที่เห็นได้ชัดเนื่องจาก

key_parse_private2: missing begin marker 

ในสถานการณ์ของฉันสาเหตุคือไฟล์ ssh config ของผู้ใช้ปัจจุบัน (~ / .ssh / config)

ใช้ดังต่อไปนี้:

ssh -i ~/myKey.pem ec2-user@<IP address> -v 'exit'

ผลลัพธ์เริ่มต้นแสดงให้เห็นว่า:

debug1: Reading configuration data /home/ec2-user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 56: Applying options for *
debug1: Hostname has changed; re-reading configuration
debug1: Reading configuration data /home/ec2-user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config

... บรรทัดดีบักจำนวนมากถูกตัดที่นี่ ...

debug1: Next authentication method: publickey
debug1: Trying private key: /home/ec2-user/somekey.pem
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.

บรรทัดที่สามด้านบนคือที่ระบุปัญหาจริง อย่างไรก็ตามฉันมองหาข้อความดีบั๊กสี่บรรทัดจากด้านล่าง (ด้านบน) และเข้าใจผิด ไม่มีปัญหากับคีย์ แต่ฉันทดสอบและเปรียบเทียบการกำหนดค่าอื่น ๆ

ไฟล์การกำหนดค่าผู้ใช้ของฉันรีเซ็ตโฮสต์ผ่านการตั้งค่าร่วมที่ไม่ได้ตั้งใจดังแสดงด้านล่าง บรรทัดโฮสต์แรกไม่ควรมีความคิดเห็น

$ cat config
StrictHostKeyChecking=no
#Host myAlias
        user ec2-user
        Hostname bitbucket.org
#        IdentityFile ~/.ssh/somekey
#        IdentitiesOnly yes

Host my2ndAlias
        user myOtherUser
        Hostname bitbucket.org
        IdentityFile ~/.ssh/my2ndKey
        IdentitiesOnly yes

ฉันหวังว่าคนอื่นเห็นว่ามีประโยชน์


4

ฉันลืมเพิ่มชื่อผู้ใช้ (Ubuntu) เมื่อเชื่อมต่ออินสแตนซ์ Ubuntu ของฉัน ดังนั้นฉันจึงลองทำสิ่งนี้:

ssh -i /path/my-key-pair.pem my-ec2-instance.amazonaws.com

และวิธีที่ถูกต้องคือ

ssh -i /path/my-key-pair.pem ubuntu@my-ec2-instance.amazonaws.com

ข้อผิดพลาดเริ่มต้นที่ถูกต้อง หากคุณลืมที่จะเพิ่มชื่อผู้ใช้มันจะใช้ชื่อผู้ใช้ที่คุณเข้าสู่ระบบด้วยในเครื่องคอมพิวเตอร์ของคุณ
Thibault D.

3

เรื่องนี้เกิดขึ้นกับฉันหลายครั้ง ฉันใช้ Amazon Linux AMI 2013.09.2 และ Ubuntu Server 12.04.3 LTS ซึ่งมีทั้งในระดับฟรี

ทุกครั้งที่ฉันเปิดตัวอินสแตนซ์ฉันได้รับอนุญาตปฏิเสธที่จะปรากฏขึ้น ฉันยังไม่ได้ตรวจสอบ แต่ทฤษฎีของฉันคือเซิร์ฟเวอร์ไม่ได้ติดตั้งอย่างสมบูรณ์ก่อนที่ฉันจะลองใช้ หลังจากถูกปฏิเสธไม่กี่ครั้งโดยไม่ได้รับอนุญาตฉันรอไม่กี่นาทีจากนั้นฉันก็สามารถเชื่อมต่อได้ หากคุณกำลังมีปัญหาฉันขอแนะนำให้รอห้านาทีแล้วลองอีกครั้ง


ฉันรอ 5 นาที และมันก็ใช้งานได้ ฉันอยู่ในเทียร์ฟรีเช่นกัน ขอบคุณ
Emeka Mbah

2

นี่เป็นสถานการณ์ที่น่าผิดหวังที่เป็นไปได้ที่ทำให้เกิดข้อผิดพลาดนี้:

หากคุณกำลังเลี้ยงอินสแตนซ์ใหม่จาก AMI ที่คุณสร้างอินสแตนซ์อื่น (พูดอินสแตนซ์ xyz) ดังนั้นอินสแตนซ์ใหม่จะยอมรับเฉพาะคีย์เดียวกับที่อินสแตนซ์ A ใช้ สิ่งนี้สามารถเข้าใจได้อย่างสมบูรณ์ แต่มันทำให้สับสนเพราะในระหว่างการสร้างตัวอย่างใหม่ทีละขั้นตอนคุณจะถูกขอให้เลือกหรือสร้างคีย์ (ในขั้นตอนสุดท้าย) ซึ่งจะไม่ทำงาน

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


ว้าวฉันไม่เคยคิดเรื่องนี้เลย การใช้รหัสเก่าช่วยแก้ปัญหาให้ฉันได้ ขอบคุณ
tolgamorf

โดยปกติจะผนวกคีย์สาธารณะใหม่เข้ากับไฟล์ authorized_keys จึงทำให้สามารถใช้งานได้ทั้งคู่ แม้ว่าฉันจะทำการทดสอบมาระยะหนึ่งแล้ว แต่นั่นเป็นสิ่งที่ฉันคาดว่าจะเกิดขึ้น
Thibault D.

2

ฉันดิ้นรนกับสิ่งนี้ชั่วขณะหนึ่งจนกระทั่งฉันพบสิ่งต่อไปนี้:

eb ssh

เมื่อคุณใช้สิ่งนั้นจากไดเรกทอรีโครงการ bingo-bango no muss no fuss คุณก็เข้ามา


2

ในกรณีของฉันเองฉันทำสิ่งต่อไปนี้:

chmod 400 <key.pem>

ssh -i <key.pem> ec2-user@ec2_public_dns (for debian)

ตอนแรกฉันใช้ชิ้นroot@ส่วนและฉันได้รับพรอมต์นี้:

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

2

ผมอยู่ใน Windows ด้วยWinSCP มันใช้งานได้ดีทั้งบน File Explorer และ PuTTY SSH Shell เพื่อเข้าถึง Amazon EC2-VPC Linux ของฉัน ไม่มีอะไรจะทำอย่างไรกับเป็นchmod pem fileที่จะใช้myfile.ppk แปลงโดยPuTTYgenจากไฟล์ pem


2

สิ่งเดียวกันเกิดขึ้นกับฉัน แต่สิ่งที่เกิดขึ้นคือกุญแจส่วนตัวหายไปจากพวงกุญแจบนเครื่องของฉัน

ssh-add -K

เพิ่มคีย์อีกครั้งจากนั้นคำสั่ง ssh เพื่อเชื่อมต่อกลับสู่การทำงาน


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

1
ยังไม่ได้ยืนยันตัวเอง แต่คำตอบที่ยืนยันแล้วที่นี่อาจช่วยได้: apple.stackexchange.com/questions/254468/ …
eiTan LaVi

1

ปัญหานี้สามารถแก้ไขได้โดยเข้าสู่กล่อง Ubuntu โดยใช้คำสั่งด้านล่าง:

ssh -i ec2key.pem ubuntu@ec2-public-IP

1
กรุณาให้รายละเอียด
Syeda Zunaira

1

ฉันมีสองครั้งที่คีย์และบรรทัดคำสั่ง ssh ถูกต้อง (ฉันรู้เพราะฉันกำลังทำซ้ำอินสแตนซ์ Ubuntu 14.04 ที่ทำงาน) แต่เพียงแค่ไม่สามารถ ssh เป็นอินสแตนซ์ใหม่แม้หลังจากรอ 5 นาทีตามที่ Wade Anderson แนะนำไว้ข้างต้น

ฉันต้องทำลายและสร้างเครื่องใหม่ สิ่งนี้เกิดขึ้นในสองครั้งที่แยกกัน ตั้งแต่แรกฉันไม่สามารถเข้าได้ฉันไม่เห็นว่ามีอะไรผิดปกติ

ดังนั้นหากคุณมีปัญหานี้ลองสิ่งนั้น


1

คุณต้องตรวจสอบสิ่งต่าง ๆ เหล่านี้:

  1. ตรวจสอบว่าที่อยู่ IP ของคุณถูกต้อง
  2. ตรวจสอบให้แน่ใจว่าคุณใช้รหัสที่ถูกต้อง
  3. ตรวจสอบให้แน่ใจว่าคุณใช้ชื่อผู้ใช้ที่ถูกต้องคุณสามารถลอง: 3.1 ผู้ดูแลระบบ 3.2 ผู้ใช้ ec2 3.3 อูบุนตู

ฉันมีปัญหาเดียวกันและแก้ไขได้หลังจากเปลี่ยนชื่อผู้ใช้เป็น Ubuntu ในเอกสาร AWS ถูกกล่าวถึงผู้ใช้ ec2 ผู้ใช้ แต่อย่างใดไม่ทำงานสำหรับฉัน


1

รหัสส่วนตัวของฉันถูกตั้งค่าให้ได้รับอนุญาต400และมีผลในการอนุญาตปฏิเสธการตั้งค่าเป็น '644' ช่วยฉัน

key_load_private_type: การอนุญาตที่ถูกปฏิเสธเป็นข้อผิดพลาดเฉพาะที่ฉันได้รับ

สารละลาย: Sudo chmod 644 <key.pem>

หมายเหตุ: ต้องตั้งค่าเป็น 644 ซึ่งไม่ได้ทำงานกับ 400


1

เมื่อคุณลองทำ

ssh -i <.pem path> root@ec2-public-dns

ec2-userคุณจะได้รับข้อความให้คำปรึกษาคุณจะใช้

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

ดังนั้นใช้

ssh -i <.pem path> ec2-user@ec2-public-dns


1

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

เข้าสู่ระบบด้วยผู้ใช้รูท ssh -i yourkey.pem (400 permission) root@<ip> มันจะโยนความผิดพลาดและจะให้ชื่อผู้ใช้แก่คุณ จากนั้นเข้าสู่ระบบด้วยผู้ใช้นั้น


1

มันเป็นสิ่งพื้นฐาน แต่ให้ยืนยันผู้ใช้ที่คุณพยายามทำการเข้าสู่ระบบเสมอ อิ่มกรณีของฉันเป็นเพียงสิ่งที่ทำให้ไขว้เขว ฉันพยายามใช้ผู้ใช้รูท :

ssh -i ~/keys/<key_name> root@111.111.111.111

แต่เป็นผู้ใช้อื่น :

ssh -i ~/keys/<key_name> dedeco@111.111.111.111

1

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

สำหรับเครื่องท้องถิ่นให้ทำสิ่งนี้:

$ chmod 700 ~/
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_ecdsa

สำหรับเครื่องระยะไกลทำเช่นนั้น:

$ chmod 700 ~/
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

หลังจากนั้น ssh ของฉันก็เริ่มทำงานอีกครั้งโดยไม่ได้รับอนุญาตถูกปฏิเสธ (publickey)


0

ปัญหาที่เป็นไปได้อื่น: รหัสเข้าสู่ระบบไม่ถูกต้อง

ตรวจสอบ 'คำแนะนำการใช้งาน'

คำแนะนำที่ดีทั้งหมดข้างต้น แต่สิ่งที่ฉันพบคือฉันเลือกตัวอย่างที่ทำไว้ล่วงหน้า หลังจากเริ่มต้นอินสแตนซ์แล้วให้ดูที่คำแนะนำการใช้งาน ฉันใช้ id เข้าสู่ระบบของคีย์ส่วนตัวไม่ถูกต้องเมื่ออยู่ในคำแนะนำที่ฉันควรใช้ 'bitnami' (เช่น bitnami @ domain -i key.pem)


0

ฉันมีข้อผิดพลาดที่คล้ายกัน

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: xxxx.pem
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

ปัญหาของฉันคือว่าอินสแตนซ์ไม่สามารถเริ่มทำงานได้อย่างถูกต้องเนื่องจากข้อผิดพลาดในสคริปต์รันไทม์เริ่มต้นจาก Step 3: Configure instance detailใต้Advanced details:

สิ่งที่ฉันคิดว่าฉันป้อน:

#include
 https://xxxx/bootstrap.sh


สิ่งที่ป้อนจริงจะเป็นการทำลายการตั้งค่าอินสแตนซ์

#include

https://xxxx/bootstrap.sh

ดังนั้นคีย์สาธารณะด้านอินสแตนซ์จึงไม่ได้ถูกสร้างขึ้น


0

เป็นเรื่องละเอียดอ่อน

ผิด: SSH EC2-user @ XXX.XX.XX.XX -i MyEC2KeyPair.pem

ถูกต้อง: SSH ec2-user @ XXX.XX.XX.XX -i MyEC2KeyPair.pem


-1

ฉันสามารถ SSH จากเครื่องหนึ่ง แต่ไม่ใช่จากเครื่องอื่น ปรากฎว่าฉันใช้กุญแจส่วนตัวผิด

วิธีที่ฉันคิดออกนี้คือการรับกุญแจสาธารณะจากกุญแจส่วนตัวของฉันเช่นนี้

ssh-keygen -y -f ./myprivatekey.pem

สิ่งที่ออกมาไม่ตรงกับสิ่งที่อยู่ใน~/.ssh/authorized_keysอินสแตนซ์ EC2


-1

คำตอบที่ติดอันดับยอดนิยมทั้งหมดข้างต้นนั้นถูกต้องและควรใช้ในกรณีส่วนใหญ่ ในกรณีที่พวกเขาไม่ได้เป็นในกรณีของฉันฉันเพียงแค่ลบ~/.ssh/known_hostsไฟล์ของฉันบนเครื่องที่ฉันพยายาม ssh จากและที่แก้ไขปัญหาให้ฉัน ฉันสามารถเชื่อมต่อได้ในภายหลัง


ในขณะที่การลบknown_hostsสามารถแก้ปัญหาเมื่อเชื่อมต่อกับเซิร์ฟเวอร์ที่เปลี่ยนรหัสโฮสต์ (ในขณะที่มันเป็นวิธีที่ไม่ดีอยู่แล้ว) ฉันค่อนข้างแน่ใจว่าจะไม่สามารถแก้ไขข้อผิดพลาด"สิทธิ์ที่ถูกปฏิเสธ (publickey)"
Martin Prikryl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.