Что означает "key_load_public: нет такого файла или каталога"?
Я устранял 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
...
2 ответа
В буквальном смысле это означает, что в нем нет такого файла или каталога, к которым ssh хотел бы получить доступ.
Тем не менее, речь идет о файле, упомянутом ниже, а не выше. У вас есть только обычные открытые ключи, но у вас нет для них сертификатов SSH (возможно, потому, что они вам просто не нужны). Однако OpenSSH всегда будет пытаться загрузить .pub-cert
файл для каждого ключа идентификации.
В руководстве ssh-keygen(1) рассказывается о создании центра сертификации OpenSSH и подписании сертификатов, если вам будет интересно. (Примечание: здесь не используется X.509, только собственный формат сертификата OpenSSH.)
Обычно сертификаты полезны, только если у вас огромное количество пользователей (и / или серверов), но вы не хотите использовать Kerberos.
В моем случае я попытался клонировать проект gitlab, и решение должно работать для любого сервиса git. Ошибка была
#15 0.589 debug1: identity file /root/.ssh/id_rsa type -1,
#15 0.589 debug1: key_load_public: No such file or directory
Оно исчезло после использования
echo "Host *\n User git\n HostName gitlab.com\n AddKeysToAgent yes\n IdentityFile /root/.ssh/id_rsa" >> /etc/ssh/ssh_config
Это также то, что запрашивается в вашем блоке сообщений:
debug1: Reading configuration data /etc/ssh/ssh_config
...
debug1: key_load_public: No such file or directory
Решение доказывает, что ssh необходимо проверить, является ли сервер известным хостом. Если вы не назначили необходимый известный хост, серверу gitlab не доверяют, что подразумевается подthe key_load_public cannot be found
. Да, сообщение об ошибке сбивает с толку.
Вы также можете вручную заполнить этот ssh_config безecho
команда, конечно.
Я только что увидел, что это также решение проблемы сбоя сервера .