Що означає "key_load_public: немає такого файлу чи каталогу"?


42

Я PubkeyAuthenticationвиправляв неполадки із-лише проблеми. Коли я використовую багатослівний режим, я бачу багато "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тому, що сторінка man неоднозначна щодо того, який ключ потрібно вказати - державний чи приватний. (Пубковий ключ - це все, що потрібно для посвідчення особи; приватний ключ необхідний для підтвердження права власності на ключ у виклику / відповіді):

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, лише власний формат cert OpenSSH.)

Зазвичай сертифікати корисні лише в тому випадку, якщо у вас є величезна кількість користувачів (та / або серверів), але ви не хочете використовувати Kerberos.


Спасибі Грауїті. Бо IdentityFileщо мені потрібно вказати? Відкритий ключ або приватний ключ?
— jww

Це повинен бути файл приватного ключа (який фактично містить всю клавіатуру - додатковий .pubфайл призначений лише для [роду] зручності).
— grawity

5
Оф, зараз це заплутано. Хтось справді повинен подати звіт про помилку :-(
— 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 .
— Олександр Птах

12
Іноді "повідомлення про помилку" буквально означає "повідомлення про помилку". Не кожен користувач opensh є програмістом на C.
— grawity
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.