Kunci Publik SSH - Tidak tersedia metode otentikasi yang didukung (server mengirim kunci publik)


80

Saya memiliki pengaturan server 12.10 di mesin virtual dengan jaringannya diatur ke dijembatani (pada dasarnya akan terlihat sebagai komputer yang terhubung ke switch saya).

Saya menginstal opensshd via apt-getdan dapat terhubung ke server menggunakan dempul dengan nama pengguna dan kata sandi saya.

Saya kemudian mulai mencoba membuatnya menggunakan otentikasi kunci publik / pribadi. Saya melakukan yang berikut:

  1. Menghasilkan kunci menggunakan PuttyGen.
  2. Memindahkan kunci publik ke /etc/ssh/myusername/authorized_keys(saya menggunakan direktori home terenkripsi).
  3. Atur sshd_configseperti:

    PubkeyAuthentication yes
    AuthorizedKeysFile /etc/ssh/%u/authorized_keys
    StrictModes no
    PasswordAuthentication no
    UsePAM yes
    

Ketika saya terhubung menggunakan dempul atau WinSCP, saya mendapatkan pesan kesalahan mengatakan Tidak ada metode otentikasi yang didukung (server mengirim kunci publik).

Jika saya menjalankan sshddalam mode debug, saya melihat:

PAM: initializing for "username"
PAM: setting PAM_RHOST to "192.168.1.7"
PAM: setting PAM_TTY to "ssh"
userauth-request for user username service ssh-connection method publickey [preauth]
attempt 1 failures 0 [preauth]
test whether pkalg/pkblob are acceptable [preauth[
Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
Checking blacklist file /etc/ssh/blacklist.RSA-1023
temporarily_use_uid: 1000/1000 (e=0/0)
trying public key file /etc/ssh/username/authorized_keys
fd4 clearing O_NONBLOCK
restore_uid: 0/0
Failed publickey for username from 192.168.1.7 port 14343 ssh2
Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]
do_cleanup [preauth]
monitor_read_log: child log fd closed
do_cleanup
PAM: cleanup

Mengapa ini terjadi dan bagaimana saya bisa memperbaikinya?


Dalam kasus saya, saya memiliki dua instance AWS. Salah satunya bekerja dengan sempurna, yang lain bekerja saat terhubung melalui Intellij Idea, tetapi tidak dari Putty, tetapi itu bekerja pada awalnya. Jadi dalam kasus saya pasti ada sesuatu tentang dempul
Marian Klühspies

Jawaban:


70

Masalah terpecahkan:

Sepertinya ada masalah dengan file kunci publik saya. PuttyGen akan membuat file kunci publik yang terlihat seperti:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----

Namun, ini tidak akan berfungsi, jadi yang perlu Anda lakukan adalah membuka kunci di PuttyGen, dan kemudian menyalinnya dari sana (ini menghasilkan kunci berada dalam format yang benar dan dalam 1 baris):

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022

Tempel ini ke dalam authorized_keysmaka itu akan berhasil.


1
Saya membuka authorized_keysvi dan menghapus semua jeda baris dan berhasil.
Luke

1
di mana file kunci publik berada? saya hanya menggunakan dempul.
Syler

1
Saya melakukan semua hal di atas tetapi server tetap mengirim Tidak ada metode otentikasi yang didukung tersedia (server mengirim kunci publik)
Al-Alamin

Bagaimana Anda tahu ini tidak akan berhasil / di mana Anda menemukan format yang diharapkan?
Michael

Di mana saya perlu menempelkan tepat ketika Anda mengatakan "Rekatkan ini ke dalam otor_keys maka itu harus berfungsi." @ F21
Mahender Reddy Yasa

20
  1. Edit /etc/ssh/sshd_configfile.
  2. Ubah PasswordAuthenticationdan ChallengeResponseAuthenticationmenjadi yes.

3a. Mulai kembali ssh /etc/init.d/ssh restart.
ATAU
3b. lebih baik Anda gunakanservice sshd restart


memang ini adalah komentar yang berguna jika Anda mengalami kesulitan menghubungkan perangkat lunak ftp vie
cnu

Itu berhasil untuk saya!
Asinox

8
Seluruh tujuan otentikasi melalui file kunci adalah untuk menghindari otentikasi password, sehingga Anda benar-benar harus mengatur PasswordAuthenticationuntuk no.
Pere

Itu satu-satunya jawaban yang membantu saya. Saya tidak memerlukan otentikasi kunci publik / pribadi, tetapi saya mendapatkan pesan aneh itu.
Serge Rogatch

Terima kasih ChallengeResponseAuthentication, ini menyelesaikan masalah saya pada Debian 10.0
realtebo

10

Saya hanya tip, semoga membantu orang lain dengan sakit kepala yang saya alami. F21 benar bahwa Anda perlu menyalin kunci dari jendela PuTTYGen alih-alih menyimpan file, tetapi setelah menyalin, cara Anda menempelkan mungkin memiliki dampak signifikan pada apakah kunci Anda akan berfungsi atau tidak. Beberapa editor akan mengubah teks saat Anda menempelkan, atau melakukan sesuatu dengan baris baru atau sesuatu yang membuat file official_keys tidak valid.

Apa yang saya temukan sebagai yang paling tidak mungkin putus adalah untuk menggemakan string penuh dan mengarahkan output ke file. Mengklik kanan di Putty untuk menempelkan kunci string ke commandline, itu berfungsi seperti ini (dengan contoh yang diberikan di atas):

echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys

Anda akan berakhir dengan ini:

echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys

Keuntungan lain dari metode ini adalah Anda dapat menambahkan beberapa kunci dengan cara ini dengan menggunakan >> untuk menambahkan alih-alih> untuk menimpa, misalnya:

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

Semoga itu bisa membantu seseorang.


Ini tidak berfungsi untuk 4096 bit kunci ... melebihi batas terminal untuk karakter yang saya kira
Freedo

1
Mungkin atau mungkin bukan ide yang baik untuk menghapus ini dari bash history Anda sesudahnya.
Jason Powers Murray

@JasonPowersMurray: ini adalah kunci publik. Sistem kriptografi kunci publik dirancang untuk tetap aman ketika kunci diterbitkan, jadi tidak apa-apa untuk mencatat kunci publik dalam sejarah bash dan di tempat lain.
David Cary

9

Kami sudah menggunakan jenis kunci yang tepat (ppk bukan pem).

Dalam kasus kami, ini merupakan masalah dengan izin file untuk otor_keys pada folder pengguna server. Itu harus -rw-r - r-- ... Itu -rw-rw-r--

ssh sangat rewel tentang izin file.


Terima kasih telah mengarahkan saya ke arah yang benar. Dalam kasus kami, pemilik dan izin salah.
Zsolti

bagaimana cara mengubah izin file karena kita tidak dapat mengakses melalui ssh? ada cara lain untuk melakukan itu?
jit

1
Milik saya juga masalah kepemilikan, kekerabatan, dan izin. Seperti yang ditunjukkan di sini ( stackoverflow.com/a/36808935/384670 ), izin yang harus saya gunakan adalah 600 untuk file dan 700 untuk direktori. Saya juga mengubah pemilik dan grup menjadi pengguna non-root yang dimaksud.
M Katz

5

TERPECAHKAN:

  1. Anda perlu mengunduh puttyGEN dan menghasilkan kunci publik dan pribadi.
  2. Saya telah menetapkan kata sandi untuk kunci pribadi saya.
  3. kemudian konfigurasikan kunci pribadi di dempul. Putty-> SSH-> Auth-> Browse ke pribadi Anda.
  4. Pastikan Anda memiliki jalur yang sama untuk kunci pribadi dan publik.
  5. Anda perlu mengonfigurasi kunci publik di server. (Dalam kasus saya, saya sudah bicara dengan orang server dan bertanya apakah dia bisa menambahkan kunci publik saya ke server). Anda memerlukan kunci publik di sisi lain (server) koneksi.

2
"Pastikan kamu memiliki jalur yang sama untuk kunci privat dan publik." Itu tidak ada hubungannya dengan itu. Anda tidak harus
meletakkan

5

Dalam kasus saya alasannya adalah bahwa file kunci pribadi (.ppk) telah dihapus dalam agen otentikasi Putty yaitu Pageant. Saya baru saja memperbarui lagi ke Pageant di sana dan koneksi berfungsi dengan baik setelah itu.

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.