“Key_load_public: böyle bir dosya veya dizin yok” ne anlama geliyor?


42

Sadece bir PubkeyAuthenticationsorunu giderdim. Ayrıntılı mod kullandığımda, "key_load_public: böyle bir dosya veya dizin yok" ifadesini görüyorum .

Açıkçası, anahtarlar dosya sisteminden çıkar, böylece mesajın geleneksel bir anlamı yoktur:

$ 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

Tam olarak, "key_load_public: böyle bir dosya veya dizin yok" ne anlama geliyor?


Benim .ssh/configdosyada:

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

*.pubUzantı eklemenin etkisi yoktur. Hem içinde hem de olmadan *.pubdeneyin, çünkü man sayfası hangi anahtarın belirtilmesi gerektiğine ilişkin belirsizdir - genel veya özel. (Bir kimlik için ihtiyaç duyulan tek şey bir anahtardır; anahtarın bir meydan okuma / yanıtta sahipliğini kanıtlamak için özel bir anahtar gerekir):

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
...

Yanıtlar:


66

Kelimenin tam anlamıyla söylediği anlamına geliyor: ssh'nin erişmek istediği böyle bir dosya veya dizin yok.

Ancak, sözü edilen dosyanın bahsediyor aşağıda değil yukarıda. Sadece normal ortak anahtarlara sahipsiniz, ancak onlar için SSH sertifikalarına sahip değilsiniz (muhtemelen onlara ihtiyaç duymadığınız için). Ancak OpenSSH her zaman .pub-certher bir kimlik anahtarı için ilişkili dosyayı yüklemeye çalışacaktır .


Ssh-keygen (1), bir OpenSSH sertifika yetkilisi oluşturma ve sertifikaları imzalama konularında manuel olarak ilgilenir. (Not: bu, yalnızca OpenSSH’nin kendi sertifika formatı olan X.509’u kullanmaz.)

Genellikle sertifikalar yalnızca çok sayıda kullanıcınız (ve / veya sunucunuz) varsa ancak Kerberos'u kullanmak istemiyorsanız kullanışlıdır.


Teşekkürler Grawity. İçin IdentityFile, ne belirtmek gerekir? Açık anahtar veya özel anahtar?
jww

Özel anahtar dosyası olmalı (gerçekte tüm keypair'i içerir - ekstra .pubdosya sadece [uygunluk] içindir).
Grawity

5
Ooph, şimdi bu kafa karıştırıcı. Birisi gerçekten bir hata raporu
vermeli

1
Eğer "bir hata raporu ver" ile "düzeltmeyi gönder" demek istiyorsan, bunu yapmaktan çekinme : github.com/openssh/openssh-portable/blob/master/README#L38 :). İşte aramaya başlamanız için bir yer: github.com/openssh/openssh-portable/blob/master/key.c#L342 ve github.com/openssh/openssh-portable/blob/master/ssh.c#L2091 .
Alexander Bird

12
Bazen "hata raporu" tam anlamıyla "hata raporu" anlamına gelir. Her openssh kullanıcısı bir C programcısı değildir.
Grawity
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.