Galat SSH: ketik kunci tidak dikenal '----- BEGIN'

8

Saya mengalami masalah menggunakan kunci resmi untuk masuk SSH ke server jauh. Pesan kesalahan yang saya terima terlihat seperti ini:

OpenSSH_5.2p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to xx.xx.xx [xxx.xx.xx.xx] port 22.
debug1: Connection established.
debug3: Not a RSA1 key file /Users/bfenker/.ssh/id_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
...
debug2: key_type_from_name: unknown key type '-----END'
debug3: key_read: missing keytype
debug1: identity file /Users/bfenker/.ssh/id_rsa type 1
ssh_exchange_identification: Connection closed by remote host

Pertanyaan lain di situs ini telah mengirimkan pertanyaan serupa, dan solusinya biasanya dengan memeriksa ulang semua izin di sisi klien, yang telah saya lakukan:

drwxr-xr-x+ 23 bfenker          staff   782 May  8 11:02 bfenker
drwx------   8 bfenker          staff   272 May  8 10:05 .ssh
-rw-------   1 bfenker  staff  1675 May  8 09:51 id_rsa
-rw-r--r--   1 bfenker  staff   418 May  8 09:51 id_rsa.pub
-rw-------   1 bfenker  staff   999 May  8 09:46 identity
-rw-r--r--   1 bfenker  staff   663 May  8 09:46 identity.pub
-rw-r--r--   1 bfenker  staff   416 May  8 09:06 known_hosts

Saya dapat menggunakan kunci resmi untuk SSH ke server lain dan dari server ini SSH ke server yang saya inginkan. Ini adalah solusi yang lumayan yang saya coba perbaiki, tapi saya pikir itu juga menunjukkan bahwa klien saya dan server sudah diatur dengan baik.

Perhatikan bahwa ketika saya SSH berhasil masuk ke server yang berbeda, saya mendapatkan pesan kesalahan yang sama, tetapi tampaknya mulai pulih dengan baris:

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0

Adakah yang tahu mengapa ini bekerja dalam beberapa kasus tetapi tidak dalam kasus yang saya inginkan? Saran lain akan sangat dihargai!

fenkerbb
sumber
Sudahkah Anda mengubah server /etc/hosts.allowdan /etc/hosts.denyfile?
Michael Hampton

Jawaban:

13

Necroquestion! Berdasarkan fakta bahwa Anda dapat menggunakan kunci ini untuk masuk ke server lain @ michael-hampton ada di jalur yang benar: ada sesuatu (firewall / tcp wrappers / sshd config) di server tujuan yang menolak akses. Semua pembicaraan tentang format kunci yang salah ini adalah herring merah berdasarkan interpretasi info debug yang salah. Garis

debug1: identity file /Users/bfenker/.ssh/id_rsa type 1

Menunjukkan ssh dapat memahami kunci.

Mark Wagner
sumber
4
Ini seharusnya lebih tinggi, saya memiliki log yang sama persis seperti ini, tetapi akhirnya mengerti kunci SSH dan saya tidak terhubung untuk alasan yang berbeda. Mengapa dikatakan di log, ia tidak bisa memahami kuncinya, padahal kenyataannya bisa, berada di luar jangkauan saya.
mgrandi
Ia mencoba untuk membacanya dalam format baris tunggal terlebih dahulu dan jika gagal akan menampilkannya ke log verbose dan kemudian mencoba format lain juga, yang akan berhasil.
Samoth
8

Kunci SSH Anda disimpan dalam format yang salah. OpenSSH menggunakan kunci yang dimasukkan dalam satu baris. Anda perlu ssh-keygendengan -idan -mpilihan, lihat man ssh-keygen. Mungkin salah satunya:

ssh-keygen -m RFC4716 -i -f /Users/bfenker/.ssh/id_rsa

Gunakan output sebagai file kunci baru ( ssh-keygen ... >newkeyfile).

Edit 1:

Harap perhatikan ini: "Opsi ini akan membaca file kunci pribadi (atau publik) yang tidak dienkripsi "

Jadi mungkin file tersebut harus diubah menjadi tanpa frasa sandi oleh program yang memahami format itu.

Hauke ​​Laging
sumber
Terima kasih untuk balasan Anda. Aplikasi ssh-keygen saya tidak memiliki -mopsi, dan mencoba tanpa -mopsi memberi saya kesalahan ini: buffer_get_string_ret: bad string length 813827235 key_from_blob: can't read key type decode blob failed.
fenkerbb
Maka Anda harus memeriksa dokumentasi perangkat lunak SSH Anda atau melakukan konversi pada sistem Linux normal (yang Anda percayai).
Hauke ​​Laging
Ha! Linux "normal"! Saya menggunakan MacOSX jadi saya tahu bahwa OS saya kemungkinan menjadi masalah di sini.
fenkerbb
@ fenkerbb Bukan OS Anda tetapi format kunci default implementasi SSH Anda (= OS Anda). Anda akan memiliki masalah yang sama dengan di puttybawah Windows. Tapi dempul sangat bagus untuk dengan mudah menawarkan kedua format ... (setidaknya untuk kunci publik)
Hauke ​​Laging
Saya telah mencoba perintah Anda dengan versi ssh-keygen yang berbeda dan mendapatkan kesalahan ini buffer_get_string_ret: bad string length 813827235 . Baris pertama file kunci saya adalah -----BEGIN RSA PRIVATE KEY-----dan mulai pada baris berikutnya adalah daftar panjang karakter alfanumerik. @Hauke ​​Laging
fenkerbb
1

Pertama, Anda harus memeriksa log sshd Anda. yaitu

less /var/log/secure

Tergantung pada file distribusi unix dengan log keamanan mungkin berbeda. Tetapi ketika Anda menemukan jika, itu harus memberi tahu alasan bahwa Anda tidak dapat masuk.

lbednaszynski
sumber
1

Saya juga menghadapi masalah ini baru-baru ini. Dalam kasus saya, semua izin sudah benar termasuk .ssh, file rsa, direktori home, dan semua yang terkait dengan pengguna. Masalahnya adalah bahwa saya memiliki kunci publik yang dibuat sebelumnya di .ssh yang tidak sesuai dengan kunci pribadi yang saya gunakan untuk login. Menghapus kunci publik dari .ssh memperbaiki masalah.

Saya menggunakan ssh-keygen untuk membuat direktori .ssh yang menghasilkan kunci pub ini dan karenanya masalah.

pengguna3627034
sumber
1

Saya merasa jawabannya di sini tidak begitu jelas. Jawaban Mark Wagner tidak menutupinya, tetapi tidak sepenuhnya menjelaskan situasinya.

Garis-garis dalam output diawali dengan level debug mereka, yang juga memberikan petunjuk tentang signifikansi mereka: tetapi angka yang lebih rendah lebih signifikan. Hal- debug3:hal itu jauh lebih penting daripadadebug1:

Ketika file kunci dibaca, ssh pertama-tama mencoba untuk menguraikannya sebagai kunci RSA yang sudah usang (sekarang disebut "RSA1"), kunci-kunci itu mulai dengan SSH PRIVATE KEY FILE FORMATdan nomor versi. Semua kunci RSA baru mulai -----BEGIN RSA PRIVATE KEY-----. Berikut adalah upaya masuk identitydengan kunci gaya RSA1 lama dan id_rsagaya baru.

OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [::1] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/identity type 0
debug1: identity file /home/user/.ssh/identity-cert type -1
debug3: Not a RSA1 key file /home/user/.ssh/id_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
[...]
debug2: key_type_from_name: unknown key type '-----END'
debug3: key_read: missing keytype
debug1: identity file /home/user/.ssh/id_rsa type 1
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1

Pada titik ini telah diidentifikasi jenis kunci dalam file identitysebagai type 0dan id_rsasebagai type 1. File lain yang diperiksa tidak ada dan karenanya type -1.

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3

Karena ini adalah protokol 2, protokol 1 kunci RSA identityakan diabaikan selama pertukaran kunci.

debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/user/.ssh/id_rsa (0x5622d77426a0)
debug2: key: /home/user/.ssh/id_dsa ((nil))
debug2: key: /home/user/.ssh/id_ecdsa ((nil))

Ini mengingatkan kita pada file kunci yang ingin digunakan. Tidak yakin mengapa itu tidak menolak file yang hilang, hanya file protokol 1, tetapi ...

debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
[...]
debug1: Next authentication method: publickey
debug1: Offering public key: /home/user/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 372 bytes for a total of 1689
debug1: Server accepts key: pkalg ssh-rsa blen 277

Dan di sini ia menawarkan id_rsakunci dan diterima.

Jadi, singkatnya, masalah dalam judul pertanyaan adalah ikan haring merah yang berasal dari ssh mencoba berbagai cara untuk mengurai kunci yang ditemukannya, bukan masalah nyata dengan kunci.

Protokol Cupcake
sumber
0

Saya memiliki masalah yang sama pada MacBook Pro saya dengan MacOS 10.7.5. Tidak ada yang salah dengan kunci saya, hanya saja kunci itu dienkripsi (dengan frasa sandi, seperti yang seharusnya Anda lakukan) dan tidak dienkripsi oleh ssh dengan benar. Tampaknya ssh-agentmengalami masalah.

Menurut artikel ini , coba ini:

  1. Masukkan /usr/bin/ssh-agentItem Login Anda (Preferensi Sistem -> Pengguna dan Grup -> pilih pengguna -> Item Login). Sangat sulit untuk menavigasi ke /usr/bindalam kotak dialog, jadi artikel ini menyarankan membuat tautan di direktori home Anda ( ln -s /usr/bin/ssh-agent) yang dapat Anda hapus begitu Anda memasukkannya ke Item Login.

  2. Keluar dari Terminal.app

  3. Mulai ulang mesin.

  4. Buka Terminal dan coba lagi perintah ssh Anda.

Bekerja untuk saya (paling tidak, itu pernah sekali).

Paul Price
sumber