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.