Co oznacza „key_load_public: brak takiego pliku lub katalogu”?


42

Byłem rozwiązywania PubkeyAuthentication-tylko problem. Kiedy używam trybu pełnego , widzę dużo „public_load_public: brak takiego pliku lub katalogu” .

Oczywiście klucze wychodzą z systemu plików, więc komunikat nie wydaje się mieć zwykłego znaczenia:

$ 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

Co dokładnie oznacza „key_load_public: brak takiego pliku lub katalogu” ?


Mój .ssh/configplik ma:

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

Dodanie *.pubrozszerzenia nie ma wpływu. Próbowałem zarówno z, jak i bez, *.pubponieważ strona podręcznika jest niejednoznaczna w odniesieniu do tego, który klucz należy określić - publiczny lub prywatny. (Klucz publiczny jest wszystkim, czego potrzeba do tożsamości; klucz prywatny jest potrzebny do udowodnienia własności klucza w wyzwaniu / odpowiedzi):

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

Odpowiedzi:


66

Oznacza dosłownie to, co mówi: nie ma takiego pliku lub katalogu, do którego ssh chciałby uzyskać dostęp.

Mówi jednak o pliku wymienionym poniżej , a nie powyżej. Masz tylko zwykłe klucze publiczne, ale nie masz dla nich certyfikatów SSH (prawdopodobnie dlatego, że po prostu ich nie potrzebujesz). Jednak OpenSSH zawsze będzie próbował załadować skojarzony .pub-certplik dla każdego klucza tożsamości.


Podręcznik ssh-keygen (1) mówi o tworzeniu urzędu certyfikacji OpenSSH i podpisywaniu certyfikatów, jeśli jesteś zainteresowany. (Uwaga: nie używa X.509, tylko własny format certyfikatu OpenSSH.)

Zwykle certyfikaty są przydatne tylko wtedy, gdy masz ogromną liczbę użytkowników (i / lub serwerów), ale nie chcesz używać Kerberos.


Dzięki Grawity. Po IdentityFileco mam określić? Klucz publiczny czy klucz prywatny?
— jww

Powinien to być plik klucza prywatnego (który faktycznie zawiera całą parę kluczy - dodatkowy .pubplik służy tylko [dla wygody]).
— grawity

5
Och, teraz to mylące. Ktoś naprawdę powinien zgłosić błąd :-(
— einpoklum - przywróć Monikę

1
Jeśli przez „zgłoś błąd” masz na myśli „prześlij poprawkę”, możesz to zrobić: github.com/openssh/openssh-portable/blob/master/README#L38 :). Oto miejsce, w którym możesz zacząć szukać: github.com/openssh/openssh-portable/blob/master/key.c#L342 i github.com/openssh/openssh-portable/blob/master/ssh.c#L2091 .
— Alexander Bird

12
Czasami „raport o błędzie” dosłownie oznacza „raport o błędzie”. Nie każdy użytkownik openssh jest programistą C.
— grawitacja
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.