Apa artinya “key_load_public: tidak ada file atau direktori” artinya?


42

Saya telah memecahkan masalah PubkeyAuthenticationhanya masalah. Ketika saya menggunakan mode verbose, saya melihat banyak "key_load_public: tidak ada file atau direktori" .

Jelas, kunci keluar pada sistem file, sehingga pesan tampaknya tidak memiliki makna yang lazim:

$ 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

Apa sebenarnya yang dimaksud dengan "key_load_public: tidak ada file atau direktori" ?


.ssh/configFile saya memiliki:

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

Menambahkan *.pubekstensi tidak berpengaruh. Saya mencoba keduanya dengan dan tanpa *.pubkarena halaman manual tidak jelas sehubungan dengan kunci yang perlu ditentukan - publik atau pribadi. (Kunci publik adalah semua yang diperlukan untuk identitas; kunci pribadi diperlukan untuk membuktikan kepemilikan kunci dalam tantangan / respons):

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

Jawaban:


66

Artinya secara harfiah apa yang dikatakannya: tidak ada file atau direktori yang ingin diakses ssh.

Namun, itu berbicara tentang file yang disebutkan di bawah , bukan di atas. Anda hanya memiliki kunci publik biasa, tetapi Anda tidak memiliki sertifikat SSH untuk mereka (mungkin karena Anda tidak membutuhkannya). Namun OpenSSH akan selalu mencoba memuat .pub-certfile terkait untuk setiap kunci identitas.


Manual ssh-keygen (1) berbicara tentang membuat otoritas sertifikat OpenSSH dan menandatangani sertifikat, jika Anda tertarik. (Catatan: ini tidak menggunakan X.509, hanya format sertifikat OpenSSH sendiri.)

Biasanya sertifikat hanya berguna jika Anda memiliki sejumlah besar pengguna (dan / atau server) tetapi tidak ingin menggunakan Kerberos.


Terima kasih grawity Sebab IdentityFile, apa yang harus saya tentukan? Kunci publik atau kunci pribadi?
jww

Itu harus berupa file kunci pribadi (yang sebenarnya berisi seluruh keypair - .pubfile tambahan hanya untuk kenyamanan [semacam]).
grawity

5
Ooph, sekarang membingungkan. Seseorang harus benar-benar mengajukan laporan bug :-(
einpoklum - mengembalikan Monica

1
Jika dengan "mengajukan laporan bug" maksud Anda "kirim perbaikannya", silakan melakukannya: github.com/openssh/openssh-portable/blob/master/README#L38 :). Inilah tempat untuk mulai mencari: github.com/openssh/openssh-portable/blob/master/key.c#L342 dan github.com/openssh/openssh-portable/blob/master/ssh.c#L2091 .
Alexander Bird

12
Terkadang "laporan bug" secara harfiah berarti "laporan bug". Tidak setiap pengguna openssh adalah seorang programmer C.
grawity
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.