“ key_load_public: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว” หมายความว่าอย่างไร


42

ฉันได้รับการแก้ไขปัญหาPubkeyAuthentication- ปัญหาเท่านั้น เมื่อฉันใช้ verbose โหมดฉันเห็นมากของ"key_load_public: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว"

เห็นได้ชัดว่าคีย์ออกจากระบบไฟล์ดังนั้นข้อความจึงไม่มีความหมายตามธรรมเนียม:

$ ls -al ~/.ssh/id_*
-rw-------  1 jwalton  staff   751 Feb  4  2013 id_dsa
-rw-------  1 jwalton  staff   608 Feb 18  2015 id_dsa.pub
-rw-------  1 jwalton  staff   314 Feb  4  2013 id_ecdsa
-rw-------  1 jwalton  staff   180 Feb 18  2015 id_ecdsa.pub
-rw-------  1 jwalton  staff   464 Aug 23 18:15 id_ed25519
-rw-------  1 jwalton  staff   103 Aug 23 18:15 id_ed25519.pub
-rw-------  1 jwalton  staff  2546 Feb  4  2013 id_rsa
-rw-------  1 jwalton  staff   572 Feb 18  2015 id_rsa.pub

สิ่งที่ว่าไม่"key_load_public: ไม่มีแฟ้มหรือไดเรกทอรีดังกล่าว"หมายถึง?


.ssh/configไฟล์ของฉันมี:

$ cat ~/.ssh/config
IdentityFile ~/.ssh/id_ed25519
IdentityFile ~/.ssh/id_ecdsa
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/id_rsa

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

IdentityFile
    Specifies a file from which the user's DSA, ECDSA or DSA authen-
    tication identity is read...

$ ssh -v -p 1522 jwalton@192.168.1.11
OpenSSH_7.1p1, OpenSSL 1.0.2d 9 Jul 2015
debug1: Reading configuration data /Users/jwalton/.ssh/config
debug1: Reading configuration data /usr/local/etc/ssh_config
debug1: Connecting to 192.168.1.11 [192.168.1.11] port 1522.
debug1: Connection established.
debug1: identity file /Users/jwalton/.ssh/id_ed25519.pub type 4
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jwalton/.ssh/id_ed25519.pub-cert type -1
debug1: identity file /Users/jwalton/.ssh/id_ecdsa.pub type 3
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jwalton/.ssh/id_ecdsa.pub-cert type -1
debug1: identity file /Users/jwalton/.ssh/id_dsa.pub type 2
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jwalton/.ssh/id_dsa.pub-cert type -1
debug1: identity file /Users/jwalton/.ssh/id_rsa.pub type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jwalton/.ssh/id_rsa.pub-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.1
...

คำตอบ:


66

มันหมายถึงสิ่งที่มันบอกว่า: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวที่ ssh ต้องการเข้าถึง

อย่างไรก็ตามมันพูดถึงไฟล์ที่กล่าวถึงด้านล่างไม่ใช่ด้านบน คุณมีกุญแจสาธารณะทั่วไป แต่คุณไม่มีใบรับรอง SSH สำหรับพวกเขา (น่าจะเป็นเพราะคุณไม่ต้องการมัน) อย่างไรก็ตาม OpenSSH จะพยายามโหลด.pub-certไฟล์ที่เกี่ยวข้องสำหรับแต่ละรหัสประจำตัว


คู่มือ ssh-keygen (1) พูดถึงเกี่ยวกับการสร้างหน่วยงานรับรอง OpenSSH และใบรับรองการลงนามหากคุณสนใจ (หมายเหตุ: สิ่งนี้ไม่ได้ใช้ X.509 เฉพาะรูปแบบใบรับรองของ OpenSSH เท่านั้น)

โดยปกติแล้วใบรับรองจะมีประโยชน์ก็ต่อเมื่อคุณมีผู้ใช้จำนวนมาก (และ / หรือเซิร์ฟเวอร์) แต่ไม่ต้องการใช้ Kerberos


ขอบคุณ Grawity สำหรับIdentityFileสิ่งที่ฉันควรระบุ กุญแจสาธารณะหรือกุญแจส่วนตัว?
jww

ควรเป็นไฟล์กุญแจส่วนตัว (ซึ่งจริง ๆ แล้วมีทั้งคู่ keypair - .pubไฟล์เสริมนั้นเป็นเพียงเพื่อความสะดวก [เรียงลำดับ])
grawity

5
Ooph ตอนนี้มันสับสน ใครบางคนควรยื่นรายงานข้อผิดพลาด :-(
einpoklum - คืนสถานะโมนิก้า

1
หากโดย "ยื่นรายงานข้อผิดพลาด" คุณหมายถึง "ส่งการแก้ไข" คุณสามารถทำได้เช่น: github.com/openssh/openssh-portable/blob/master/README#L38 :) นี่คือสถานที่ที่จะเริ่มมองหา: github.com/openssh/openssh-portable/blob/master/key.c#L342และgithub.com/openssh/openssh-portable/blob/master/ssh.c#L2091
Alexander Bird

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