คีย์ SSH ขอรหัสผ่านสำหรับฉัน


35

ฉันมีคู่กุญแจสาธารณะ / ส่วนตัว ไม่มีข้อความรหัสผ่านใด ๆ ที่เกี่ยวข้องกับพวกเขา

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

ใครมีความคิดวิธีการรับรอบนี้ ฉันพิมพ์คำสั่งบางอย่างอย่างไม่ได้ผลหรือไม่ ฉันพยายามที่จะ ssh ลงในเซิร์ฟเวอร์ที่ฉันได้ติดตั้งในไฟล์ ~ / .ssh / config ของฉัน (อย่างถูกต้องเนื่องจากการตั้งค่าเดียวกันนี้ใช้งานได้บนเซิร์ฟเวอร์อื่น) โดยมีรหัสที่เก็บไว้ใน ~ / .ec2 / key.ppk

ฉันได้ลองใช้ puttygen.exe เพื่อสร้างไพรเวตคีย์ใหม่ด้วยวลีรหัสผ่านแล้วใช้คีย์นั้นและเมื่อฉันพิมพ์ข้อความรหัสผ่านก็ยังคงล้มเหลว

คำตอบ:


28

ก่อนอื่นมันเป็นกุญแจส่วนตัวที่จะมีวลีรหัสผ่าน สิ่งนี้จะตรวจสอบกับกุญแจสาธารณะที่เก็บไว้ในเซิร์ฟเวอร์ระยะไกล

ที่ดีที่สุดคือคุณกำลังพยายามใช้คีย์ส่วนตัว putty ส่วนตัว ( ppk) กับ openssh สิ่งนี้ไม่ได้ผล ... PuTTYgen มีตัวเลือกการส่งออกสำหรับ openssh หากเป็นกรณีนี้

ssh-rsa AAAAB3NzaC1y...... etc

ฉันยังสมมติว่าเซิร์ฟเวอร์ที่คุณพยายามจะเก็บรหัสสาธารณะของคุณอย่างถูกต้องในไฟล์คีย์ที่ได้รับอนุญาต ( ~/.ssh/authorized_keysโดยทั่วไป)

คาดเดาอีกอย่างก็คือว่าไม่ได้เลือกคีย์ที่ถูกต้อง บางสิ่งที่ฉันจะลองคือ:

การรีเซ็ตคีย์รหัสผ่านโดยใช้ssh-keygenเช่นนี้ ...

$ ssh-keygen -f ~/.ec2/key.ppk -p

สิ่งนี้จะยืนยันว่าในความเป็นจริงแล้วคีย์ของคุณใช้ (หรือไม่) มีวลีรหัสผ่านอยู่แล้ว

ประการที่สองฉันลองเชื่อมต่อโดยใช้เอาต์พุต verbose โดยระบุคีย์สาธารณะของคุณอย่างชัดเจน:

$ ssh host -i ~/.ec2/key.ppk -vvv

สิ่งนี้จะทำให้คุณมีความคิดในสิ่งที่เกิดขึ้น


ถูกต้องนี่คือกุญแจที่สร้างขึ้นโดย puttygen จากกุญแจที่ทำงานในสีโป๊ว เมื่อฉันฉาบลงในเซิร์ฟเวอร์เดียวกัน (จากเครื่องที่โฮสต์อินสแตนซ์ cygwin) มันทำงานได้ดีกับคีย์เดียวกันแน่นอน เมื่อฉันพยายามเชื่อมต่อผ่าน ssh จาก cygwin มันจะระเบิดออก ฉันสับสนว่าจะทำงานนี้ได้อย่างไร
llaskin

6
ฉันคิดว่าประเด็นของ mrverrall คือรูปแบบไฟล์สำหรับ PuTTY คีย์ส่วนตัวไม่เหมือนกับรูปแบบไฟล์ที่ใช้สำหรับ OpenSSH (ไคลเอ็นต์ ssh ใน cygwin) ดังนั้น OpenSSH จึงล้มเหลวในการใช้ข้อมูลไพรเวตคีย์เพราะไม่สามารถทราบได้ว่าข้อมูลหมายถึงอะไร แต่ PuTTY มีตัวเลือก "ส่งออก" ดังนั้นคุณสามารถรับข้อมูลในรูปแบบ "PEM" ที่ต้องการ
Phil P

ข้อผิดพลาดนี้จะได้รับหากไฟล์อยู่ในรูปแบบที่ถูกต้อง - ดังนั้นให้ตรวจสอบซ้ำสองครั้งและสามครั้งที่คุณคัดลอกและวางอย่างถูกต้องหากสร้างด้วยตนเอง
Daniel Sokolowski

คือssh-rsa AAAAB3NzaC1y...... etcเป็นรูปแบบจาก openssh ใช่มั้ย? ฉันมีรูปแบบนี้ในคีย์ส่วนตัวของฉัน สถานะส่วนหัว: PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: imported-openssh-key Public-Lines: 6แต่ไฟล์ถูกเก็บเป็นไฟล์ id_rsa นี่หมายความว่ายังคงอยู่ในรูปแบบ. pk แม้ว่าชื่อของไฟล์จะเป็นเพียงแค่id_rsa
alpha_989

พบคำตอบสำหรับรูปแบบที่แตกต่างกันที่นี่ ในกรณีของฉันแม้ว่าส่วนขยายของไฟล์จะไม่มี.ppkแต่ก็ยังอยู่ในรูปแบบโป๊วซึ่งทำให้ฉันสับสนเนื่องจากมันแสดงข้อผิดพลาดทุกประเภท แต่ไม่ให้คำแนะนำโดยตรงว่าปัญหาเกิดขึ้นกับรูปแบบของคีย์ : stackoverflow.com/a/44391850/4752883
alpha_989

18

คุณสามารถเรียกใช้ ssh-agent ดูที่นี่สำหรับการสนทนา

รุ่นสั้นที่ใช้งานได้สำหรับฉัน (เป็นทุบตี):

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-rnRLi11880/agent.11880; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11881; export SSH_AGENT_PID;
echo Agent pid 11881;

ฉันเอา 3 เส้นมันสะท้อนออกมาและดำเนินการพวกเขา อีกวิธีในการทำเช่นนั้นคือเอาท์พุทของ -s:

$ eval `ssh-agent -s`

จากนั้นฉันเพิ่มข้อมูลประจำตัวของฉันลงไป:

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/me/.ssh/id_rsa: 
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

ตอนนี้ตัวแทนจัดหาข้อมูลประจำตัวแทนฉันต้องพิมพ์ข้อความรหัสผ่านของฉัน

ฉันเชื่อว่า ssh-agent หายไปเมื่อเชลล์ทำดังนั้นควรเขียนสคริปต์เมื่อเริ่มต้นเพื่อความสะดวกสูงสุด ลิงค์ผมใช้ร่วมกันอธิบายสคริปต์เช่นกัน


4

เมื่อคุณตั้งค่าพับลิกคีย์ของคุณคุณอาจ (อาจตั้งใจ) ตั้งค่าด้วยวลีรหัสผ่าน

คุณอาจต้องเริ่มต้นใหม่ - ฉันไม่ได้ใช้ puttygen แต่คุณสามารถลบ (หรือเปลี่ยนชื่อ) กุญแจสาธารณะในไดเรกทอรี. ssh ของคุณใช้ssh-keygenเพื่อสร้างใหม่ (ไม่แน่ใจว่าจะให้รหัสผ่าน) แล้ว แบ่งปัน public_key ออกไปยังไฟล์ authorized_keys บนเซิร์ฟเวอร์ที่คุณพยายามเชื่อมต่อ

คุณอาจต้องลบคีย์รหัสผ่านเก่าของคุณออกจากไฟล์คีย์ที่ได้รับอนุญาตบนเซิร์ฟเวอร์ที่คุณกำลังเชื่อมต่อด้วย


4

ตรวจสอบว่าคีย์ส่วนตัวid_rsaไม่มีการแบ่งบรรทัดพิเศษในตอนท้ายในบางกรณีการขึ้นบรรทัดใหม่จะทำให้ ssh-keygen ขอรหัสผ่านลองสิ่งนี้:

sed  '/^$/d' /path/to/key > id_rsa

ทดสอบ:

ssh-keygen -yf id_rsa

2
OMG นี่เป็นปัญหาของฉัน บรรทัดใหม่พิเศษหลังจากที่-----END RSA PRIVATE KEY-----ทำให้มันถามรหัสผ่านในคีย์ที่ไม่มีหนึ่งชุด!
edk750

3

มีสิ่งหนึ่งที่ต้องตรวจสอบหากไฟล์ sshd_config ของคุณมี StrictModes = ใช่ดังนั้นไดเรกทอรี $ HOME หรือไดเรกทอรี $ HOME / .ssh จะต้องไม่สามารถเขียนทับกลุ่มอื่นได้ มิฉะนั้นการรับรองความถูกต้องล้มเหลวไม่ว่าอะไรจะเกิดขึ้น


1

ฉันทำผิดพลาดจากการเขียนทับไฟล์ ~ / .ssh / id_rsa ของฉันโดยไม่ได้ตั้งใจกับ ~ / .ssh / id_rsa.pub การทำเช่นนั้นจะทำให้ ssh ขอวลีรหัสผ่าน


0

ฉันพบปัญหานี้เมื่อวันก่อน โดยเฉพาะฉันพยายามคัดลอก / วางคีย์ AWS ส่วนตัวจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง

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

ฉันคิดว่านี่หมายความว่าวิธีที่ดีที่สุดคือ SSH ไฟล์ข้อความข้ามสายแทนที่จะพยายามคัดลอกและวางระหว่างหน้าต่างเทอร์มินัล


0

บน OSX ฉันสามารถรันได้:

$ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/me/.ssh/id_rsa: `Identity added: /Users/mikekilmer/.ssh/id_rsa (/Users/mikekilmer/.ssh/id_rsa)

รหัสผ่านถูกเก็บไว้โดยแอปพลิเคชัน Keychain Access ซึ่งอยู่ในโฟลเดอร์ Applications> Utilities ฉันเพิ่งเข้าไปid_ในช่องค้นหา


0

ลองดูไฟล์บันทึกบนเซิร์ฟเวอร์ ดู / var / log / auth log (เช่น / var / log / authlog สำหรับ OpenSSH แม้ว่าฉันเคยเห็นระบบปฏิบัติการบางระบบใช้ Portable OpenSSH และใช้ /var/log/auth.log) และตรวจสอบจุดสิ้นสุดของไฟล์นั้น

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

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

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


0

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

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