Що означає "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.