Mencoba melakukan otentikasi ssh dengan file kunci: server menolak kunci kami

53

Saya mencoba mengatur otentikasi ssh dengan file-file kunci sebagai ganti nama pengguna / kata sandi. Klien adalah kotak Windows yang menjalankan Putty dan server adalah server Ubuntu 12,04 LTS.

Saya mengunduh puttygen.exe dan membuatnya menghasilkan pasangan kunci. Dalam /etc/ssh/sshd_configSaya memiliki baris ini:

AuthorizedKeysFile %h/.ssh/authorized_keys

dan pada file kunci publik klien saya tertulis:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "[email protected]"
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr3Qo6T5XU06ZigGOd3eKvfBhFLhg5kWv8lz6
qJ2G9XCbexlPQGanPhh+vcPkhor6+7OmB+WSdHeNO652kTofnauTKcTCbHjsT7cJ
GNrO8WVURRh4fabknUHPmauerWQZ6TgRPGaz0aucU+2C+DUo2SKVFDir1vb+4u83
[email protected]
---- END SSH2 PUBLIC KEY ----

Saya menyalin bagian dari "ssh-rsa AAA" ke "[email protected]" dan memasukkannya ke file ~/.ssh/authorized_keysdi server saya (di homefolder saya sendiri). Dalam Putty di bawah Koneksi> SSH> Auth, saya memasukkan path ke kunci pribadi yang dihasilkan pada klien saya dan menyimpan pengaturan sesi.

Saya restart server ssh dengan

sudo service ssh restart

Sekarang jika saya memuat profil di Putty (saya memverifikasi kunci pribadi masih di Connection> SSH> Auth dan bahwa path sudah benar) dan menjalankan profil, katanya

Server refused our key

Saya mencoba meletakkan kunci publik dalam file di bawah direktori ./ssh/authorized_keys/ tetapi itu tidak membantu jadi saya gunakan ./ssh/authorized_keyssebagai file , menempelkan kunci di dalamnya. Saya juga mencoba membuat pasangan kunci privat / publik di server, memasukkan kunci publik ./ssh/authorized_filesdan memuat yang privat di Putty pada klien saya. Mem-boot ulang server juga tidak membantu.

Saya menemukan bahwa kesalahan dapat diselesaikan dengan meletakkan kunci di tempat di luar folder rumah pengguna tetapi itu hanya berguna jika folder rumah dienkripsi, yang mana ini tidak.

Juga mencoba menghasilkan kunci 4096 bit, berpikir mungkin 1024 terlalu pendek.

Bagaimana saya bisa membuatnya bekerja? Terima kasih!

SUNTING:

Ok, /var/log/auth.logkatanya:

sshd: Authentication refused: bad ownership or modes for directory /home/vorkbaard/.ssh

Google memberi tahu saya bahwa ~/.ssh/seharusnya 700 dan ~/.ssh/authorized_keys600, jadi saya melakukannya. Sekarang /var/log/auth.logmengatakan:

sshd: error: key_read: uudecode AAAAB3N [etc etc etc until about 3/4 of my public key]
Forkbeard
sumber

Jawaban:

95

Ok, sudah diperbaiki tetapi saya tidak melihat bagaimana ini berbeda dari apa yang saya coba.

Apa yang saya lakukan:

  • menghasilkan pasangan kunci dengan puttygen.exe (panjang: 1024 bit)
  • memuat kunci pribadi di profil Putty
  • masukkan kunci publik ~/.ssh/authorized_keys dalam satu baris (harus dimulai dengan ssh-rsa)
  • chmod 700 ~/.ssh
  • chmod 600 ~/.ssh/authorized_keys
  • chown $USER:$USER ~/.ssh -R
  • ubah /etc/ssh/sshd_configjadi isinyaAuthorizedKeysFile %h/.ssh/authorized_keys
  • sudo service ssh restart

Untuk pemecahan masalah lakukan # tail -f /var/log/auth.log.

Terima kasih atas bantuan Anda!

Forkbeard
sumber
1
Hmm, jadi apa yang terjadi dengan sshd: error: key_read: uudecode AAAAB3Nkesalahan itu auth.log?
Alaa Ali
Saya belum tahu, Alaa. Mungkin saya membuat kesalahan menempelkan string kunci sebelumnya. Auth.log tidak mendapatkan entri lagi sekarang dan otentikasi berbasis kunci berfungsi dengan sempurna. Masalah utama saya adalah bahwa saya tidak benar-benar yakin tentang apa yang perlu dilakukan, membuat berapa yang jauh lebih sulit. Jadi saya tidak tahu mengapa tetapi itu berhasil. Terima kasih lagi atas bantuan Anda :)
Forkbeard
Luar Biasa !!! Saya telah menggaruk-garuk kepala selama 2 hari. Jawaban ini menyelamatkan hari !!
naka
Langkah 3 adalah trik untuk saya. Saya tidak memasukkan kunci publik dalam authorized_keysfile yang baru saya tempelkan mykey.pubfile saya ke ~/.sshfolder dan berpikir itu akan mengambilnya. Alih-alih yang saya butuhkan pada akhirnya adalah menjalankan ini atau mengedit dan menempel di bawah tombol lain yang mungkin ada di sana. cat mykey.pub >> authorized_keys. Tampaknya sederhana sekarang, tetapi pelajaran yang didapat adalah semua kunci publik harus hidup authorized_keystidak hanya di ~/.ssh/direktori. Seseorang tolong beri tahu jika ini bukan pernyataan yang benar.
timbrown
jika langkah-langkahnya tidak membantu, periksa juga: 1. Anda menyalin kunci publik Putty disimpan ke dalam otor_keys, bukan OpenSSH satu 2. jika Anda menyalin menggunakan copy / paste dari PuTTYgen (yang harus Anda lakukan), Anda mungkin telah membagi kunci publik dalam banyak baris; itu harus menjadi satu baris; pastikan Anda tidak menambahkan spasi awal atau akhir saat menyalin berkat r_hartman centos.org/forums/viewtopic.php?t=990
mvladk
23

Saya baru saja mengalami masalah ini. Meskipun konfigurasi telah ditetapkan dengan benar seperti yang telah disebutkan di utas ini (izin pada otor_keys dll.), Ternyata saya memiliki kunci publik dalam format yang salah. Itu dalam bentuk:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "imported-openssh-key"
AAAAB3NzaC1yc2EAAAADAQABAAABAQDUoj0N3vuLpeviGvZTasGQ...
... lPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT
---- END SSH2 PUBLIC KEY ----

Yang tidak berhasil. Tetapi membuatnya bekerja dalam bentuk:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU.....j0N3vuLpeviGvZTasGQa1rcJiPXQMW7v3uurb+n94B9MQaaWR0odsg5DJQL92TNenOda5BO1nd08y6+sdLQmHXExTz6X8FzgoVsAkEl3RscxcxHUksiKA9JfTo38vQvG/bPxIHMCuSumCQVA1laf3rO/uOrkcB7iMWhaoi1/z6AbFtPzeh7xjGfInMWwtBI0CsHSRF73VWIxT26w0P+KjafCjSn/7vDO1bT8QHujSQelU/GqaVEvbbvPl1a7POVjKgHLNekolwRKfNeVEewcnmZaoqfHgOKlPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT UserName@HOSTNAME
kuraara
sumber
14
Anda dapat menggunakan ssh-keygen -i -f filenameofwindowsformpub.keyuntuk mengubah kunci publik ke dalam format yang dimengerti oleh server OpenSSH Anda.
Hitam
Ya, itu berhasil untuk saya! Itu harus dalam satu baris. Tidak percaya hanya itu!
adelriosantiago
1
HI kuraara Saya rasa instruksi di atas oleh @ Black harus dibuat menonjol dalam jawabannya.
ekerner
Bisakah saya menambahkan komentar ke format server OpenSSH? Bagi manusia sulit untuk mengatakan komputer apa yang diwakili kunci ini.
user1700890
Ketika saya mengikuti saran oleh @Black, tidak ada UserName @ HOSTNAME di akhir string. Saya tidak tahu apakah bagian itu penting.
arnoldbird
9

masalahnya adalah bahwa windows menggunakan baris baru yang berbeda dari linux, jadi ketika menyalin kunci dari windows ke linux, ada \ n pada akhir baris yang tidak dapat Anda lihat di linux di editor.

Jika Anda mengekor /var/log/auth.log dan mencoba masuk, kesalahannya seperti:

sshd: error: key_read: uudecode AAAAB3N [....] == \ n

Jika Anda mengubah kunci Anda di windows sehingga dalam satu baris tanpa baris baru di akhir dan salin kemudian ke linux, itu harus bekerja (lakukan trik untuk saya).

Mischa
sumber
ini masalah saya, tetapi saya tidak melihat apa pun di auth.log untuk menyarankan itu yang terjadi. frustasi ...
Anthony
8

Saya harus mengubah izin ke direktori home

chmod 700 ~
Michal Zmuda
sumber
2
Ini bekerja untuk saya juga (pada AIX).
stevepastelan
Bekerja untuk saya di CentOS juga
Jaywalker
Bekerja untuk saya di Redhat! Akses tulis grup tampaknya menjadi masalah khusus. Tetap bekerja untuk saya jika saya membiarkan izin baca grup tetap di tempatnya: "chmod 740 ~".
Paul
6

Saya harus mengubah izin direktori ~ / .ssh dari 770 menjadi 700 dan izin file ~ / .ssh / official_keys dari 660 menjadi 600.

Untuk beberapa alasan menghapus izin grup memperbaiki masalah ini untuk saya.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
dopple
sumber
5

The ~/.ssh/authorized_keysberkas membutuhkan kunci untuk menjadi semua dalam satu baris. Jika Anda menambahkannya di beberapa baris seperti pada pasta Anda di atas, cobalah bergabung dengan garis.

Paul
sumber
Terima kasih, itu masuk akal dan sekarang saya mengerti mengapa itu adalah file, bukan direktori. Namun itu tidak membantu.
Forkbeard
3
bagi siapa saja yang mungkin bingung dengan ini, yang dia maksud adalah setiap kunci itu sendiri harus berada pada satu baris, tetapi kunci yang berbeda harus berada pada baris yang berbeda.
Anthony
2

Inilah yang bekerja untuk saya:

Di puttygen, setelah Anda membuat kunci Anda, pastikan Anda menyalin dan menempelkan informasi dari bidang atas untuk masuk ke file otor_keys Anda. Jika Anda menyimpan kunci publik ke mesin klien Anda, dan kemudian membukanya, teksnya berbeda dari teks di bagian atas puttygenlayar. Sekali lagi, pastikan Anda menyalin dan menempelkan teks dari TOP puttygenlayar (setelah Anda membuat kunci Anda) ke dalam file berwenang_keys Anda yang seharusnya berada di ~/.ssh.

zach
sumber
ini sebenarnya memperbaiki masalah. saya tidak mengerti mengapa jika Anda mengklik simpan kunci publik mengapa tidak menyimpan format yang tepat.
luky
1

Selain semua jawaban di atas, pastikan Anda menyalin dan menempelkan kunci dari puttygendengan benar!

Jika Anda hanya mengklik dua kali pada sebagian besar string kunci untuk memilihnya, Anda mungkin tidak mendapatkan keseluruhan string, karena kotak teks membagi garis pada beberapa karakter, seperti +, sehingga Anda tidak memilih teks setelah +karakter ( yang tidak dapat Anda lihat karena kotak teks terlalu kecil). Pastikan untuk memilih seluruh string secara manual, dari ssh-rsahingga akhir kotak teks.

Mark Lakata
sumber
1

Terkadang ini bisa menjadi masalah yang terkait dengan memiliki kunci publik pada satu baris, pendekatan ini tampaknya menyelesaikannya

echo 'the content of the public key' > /root/.ssh/authorized_keys
dav
sumber
1

bagi saya masalahnya adalah saya buat ~/.ssh/authorized_keysmenggunakan root sehingga root dimiliki. Saya harus chown sshuser:sshuser ~/.ssh/authorized_keyskemudian mulai bekerja

PeanutPower
sumber
1

Saya juga menghadapi kesalahan ini dan menyelesaikannya dengan mengubah izin file Author_keys menjadi 600.

chmod 600 ~/.ssh/authorized_keys
Kaleem
sumber
1

Kesalahan umum adalah orang menggunakan editor teks (seperti Vim) dan menempelkan teks yang disalin sebelum mengaktifkan "sisipan" (tekan + i di Vim sebelum menempelkan)

hakabe
sumber
0

Bahkan, saya mengubah authorized_keysizin 644, lalu masalah terpecahkan.

chmod 644 ~/.ssh/authorized_keys
Peter Liang
sumber
0

untuk men-debug ssh yang bisa digunakan:

sudo `which sshd` -p 2020 -Dd

ia menjalankan sshd pada port lain 2020. ia menjalankan sshd sebagai program saat ini sehingga output menuju layar. jika ditutup ditutup.

kemudian coba sambungkan.

penjelasan:

  • `sshd` - menempatkan alamat sshd, coba jalankan sshd yang melihat apa yang dicetak. ketika menggunakan kembali kutipan itu dijalankan dan mengembalikan hasilnya di tempat.
  • -p 2020 - menentukan port
  • -D - login ke file
  • -d - masuk ke layar

https://www.attachmate.com/documentation/rsit-unix-802/rsit-unix-guide/data/sshd_options_ap.htm

Shimon Doodkin
sumber
Bisakah Anda memperluas jawaban ini? Apa argumennya? Apa yang dilakukan perintah (untuk seseorang yang tidak berpengalaman)?
Zzzach ...
-1

Saya sedang membuat file .ssh dan berwenang_keys saat login sebagai root, yang memberikan izin yang salah. Itu juga menempatkan semua file di bawah direktori root.

Mengubah kepemilikan file-file itu kepada pengguna yang Anda inginkan tidak akan menjadi praktik yang baik, jadi saya menelusuri kembali langkah-langkah saya dan memastikan saya telah masuk sebagai pengguna yang ingin saya manfaatkan dengan SSH dan buat .ssh dan berwenang_kunci lagi.

Petunjuk untuk menghubungkan Win7 ke server Xubuntu 15.04: Cara Membuat Kunci SSH dengan Putty untuk Menghubungkan ke VPS

Leo Fisher
sumber