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!
/etc/hosts.allow
dan/etc/hosts.deny
file?Jawaban:
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
Menunjukkan ssh dapat memahami kunci.
sumber
Kunci SSH Anda disimpan dalam format yang salah. OpenSSH menggunakan kunci yang dimasukkan dalam satu baris. Anda perlu
ssh-keygen
dengan-i
dan-m
pilihan, lihatman ssh-keygen
. Mungkin salah satunya: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.
sumber
-m
opsi, dan mencoba tanpa-m
opsi memberi saya kesalahan ini:buffer_get_string_ret: bad string length 813827235
key_from_blob: can't read key type
decode blob failed.
putty
bawah Windows. Tapi dempul sangat bagus untuk dengan mudah menawarkan kedua format ... (setidaknya untuk kunci publik)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 LagingPertama, Anda harus memeriksa log sshd Anda. yaitu
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.
sumber
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.
sumber
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 FORMAT
dan nomor versi. Semua kunci RSA baru mulai-----BEGIN RSA PRIVATE KEY-----
. Berikut adalah upaya masukidentity
dengan kunci gaya RSA1 lama danid_rsa
gaya baru.Pada titik ini telah diidentifikasi jenis kunci dalam file
identity
sebagaitype 0
danid_rsa
sebagaitype 1
. File lain yang diperiksa tidak ada dan karenanyatype -1
.Karena ini adalah protokol 2, protokol 1 kunci RSA
identity
akan diabaikan selama pertukaran kunci.Ini mengingatkan kita pada file kunci yang ingin digunakan. Tidak yakin mengapa itu tidak menolak file yang hilang, hanya file protokol 1, tetapi ...
Dan di sini ia menawarkan
id_rsa
kunci 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.
sumber
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-agent
mengalami masalah.Menurut artikel ini , coba ini:
Masukkan
/usr/bin/ssh-agent
Item Login Anda (Preferensi Sistem -> Pengguna dan Grup -> pilih pengguna -> Item Login). Sangat sulit untuk menavigasi ke/usr/bin
dalam 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.Keluar dari Terminal.app
Mulai ulang mesin.
Buka Terminal dan coba lagi perintah ssh Anda.
Bekerja untuk saya (paling tidak, itu pernah sekali).
sumber