Что означает «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потому что страница руководства неоднозначна в отношении того, какой ключ должен быть указан - публичный или приватный. (Открытый ключ - это все, что нужно для идентификации; личный ключ необходим для подтверждения владения ключом в ответе на вызов / ответ):

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.


Спасибо Гравити. Для IdentityFileчего я должен указать? Открытый ключ или закрытый ключ?
jww

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

5
Ой, теперь это сбивает с толку. Кто-то должен действительно подать отчет об ошибке :-(
einpoklum - восстановить Monica

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
Иногда «отчет об ошибке» буквально означает «отчет об ошибке». Не каждый пользователь openssh является программистом Си.
Гравитация
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.