Koneksi SSH meminta kata sandi meskipun kunci diterima

12

Saya diminta kata sandi meskipun sepertinya kunci SSH saya diterima. Sejauh yang saya tahu, baris "Server menerima kunci: pkalg ssh-rsa blen 277" di log di bawah ini berarti kunci saya diterima.

Berikut adalah log debug:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/sam/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug2: input_userauth_pk_ok: fp <<HASH REDACTED>>
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /home/sam/.ssh/id_dsa
debug1: Trying private key: /home/sam/.ssh/id_ecdsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug2: input_userauth_info_req
debug2: input_userauth_info_req: num_prompts 1

Bantuan sangat dihargai, semua orang yang saya temukan yang mengalami masalah SSH gagal pada titik sebelumnya yang saya lihat.

SamStephens
sumber

Jawaban:

11

Kunci pribadi Anda pasti tidak diterima, itu hanya dicoba. Ada sejumlah cara otentikasi berbasis kunci SSH dapat gagal, dan pencatatannya tidak terlalu bagus sehingga men-debug masalah khusus ini adalah salah satu dari masalah kencing hewan peliharaan pribadi saya. Saya telah menemukan bahwa kesalahan biasanya merupakan hasil dari salah satu situasi berikut.

  • ~/.ssh/authorized_keysFile Anda terlalu terbuka. Untuk perlindungan Anda sendiri, sshdupaya untuk melindungi Anda dari diri sendiri. Jika izin pada file kunci resmi Anda maka itu akan gagal otentikasi. Lari chmod -R go-rwx ~/.ssh.
  • Kunci publik Anda ~/.ssh/authorized_keysrusak. Ini bisa jadi akibat dari sejumlah masalah, tetapi yang paling umum adalah masalah copy paste. Beberapa terminal, ketika menyalin / menempel di layar, akan menafsirkan garis bungkus sebagai baris baru. Setiap entri dalam authorized_keysfile harus satu baris. Anda dapat memeriksa ini dengan mengubah ukuran emulator terminal Anda dan melihat apakah ada jeda, membandingkan output wc -l ~/.ssh/authorized_keysdengan jumlah kunci yang seharusnya ada di sana, atau apa pun yang paling cocok untuk Anda. Pastikan setiap tombol adalah satu baris dan Anda harus baik-baik saja.
Scott Pack
sumber
7

Output ssh -v yang Anda tempel menyarankan bahwa ia mencoba menggunakan kunci tetapi itu tidak berhasil, sehingga beralih ke keyboard-interaktif.

Sudahkah Anda memeriksa log otentikasi pada server yang Anda sambungkan? (misalnya, /var/log/auth.log). Jika pengaturan Anda pada ujung jarak jauh salah, mis. Izin salah, maka ssh -v (atau -vv atau -vvv) tidak akan memberi tahu Anda hal ini, tetapi akan dicatat oleh sshd.

Daniel Lawson
sumber
/var/log/auth.log memberikan jawaban untuk saya: "Otentikasi ditolak: kepemilikan buruk atau mode untuk direktori / root"
kevlar1818
5

Dalam kasus saya, file /var/log/authlogmenunjukkan:

[ID 800047 auth.info] Authentication refused: bad ownership or modes for directory 

Saya telah memeriksa kepemilikan / izin yang benar di .sshtetapi $HOMEmemiliki 777 izin. Mengatur 755 izin pada $HOMEsftp yang diizinkan untuk berfungsi. Terima kasih lagi.

Robin AA
sumber
2

Jika Anda memiliki akses ke server (langsung atau melalui login lain), periksa log server di (katakanlah) /var/log/sshdatau /var/log/securetergantung pada sistem Anda

Biasanya disebabkan oleh kesalahan izin pada ~/.ssh/authorized_keysfile Anda . Pastikan itu tidak dapat dibaca dunia, tetapi yang terpenting itu bisa dibaca oleh pengguna (terkadang pengguna layanan) yang menjalankan sshd

Abu
sumber
1
Sistem mana yang digunakan /var/log/sshd? Sistem yang saya tahu menggunakan salah satu /var/log/auth.logatau /var/log/secure.
kasperd
1

Izin ~/.ssh/authorized_keysdalam jarak jauh penting ( 600untuk sistem saya RHEL dan Solaris)

Izin direktori home Anda di remote penting ( 700di sistem saya)

Pada akhirnya dijalankan sshddi mesin jarak jauh dalam mode debug pada port lain dapat membantu:

sudo /usr/sbin/sshd -p 5555 -dd

5555adalah contoh port, Anda dapat mengubahnya. Untuk info lebih lanjut dalam hal ini Anda dapat melihat: http://ubuntuforums.org/archive/index.php/t-2219973.html

sepehr hakimi
sumber
0

Saya menemukan ada masalah jika saya menggunakan sshdlayanan ini. Untuk menghindari masalah ini, hentikan sshdlayanan dengan service sshd stopdan kemudian mulai sshddaemon dari command prompt dengan sudo /usr/sbin/sshd.

Yoganand Bijapur
sumber
0

Mencoba

/sbin/restorecon -r /root/.ssh

Kemungkinan masalah dengan pengaturan izin.

abkrim
sumber