ssh tidak lagi mengizinkan otentikasi kunci publik

22

Mesin saya baru-baru ini berhenti menerima otentikasi kunci publik yang masuk. Saya memiliki desktop ubuntu 11.04 yang saya ssh masuk dari mesin windows. Saya menggunakan dempul dengan kontes. Saya dapat terhubung tetapi hanya dengan otentikasi kata sandi interaktif, tidak dengan kunci rsa yang telah saya siapkan.

Saya sudah memverifikasi bahwa kuncinya terdaftar di ~ / .ssh / Authorized_keys. Bagaimana cara memperbaikinya dan apa yang harus saya periksa?

Andrew Redd
sumber
2
Pertama-tama periksa bahwa ketiganya ~, ~/.sshdan ~/.ssh/authorized_keyshanya dapat ditulis oleh Anda (khususnya tidak ada izin menulis grup). Cari /var/log/auth.logentri log yang dibuat pada saat upaya login Anda. Salin dan tempel ke dalam pertanyaan Anda (mengedit nama untuk privasi jika Anda mau). Juga periksa apakah masalahnya ada di sisi server atau tidak: salin kunci privat ke mesin Linux (Anda harus mengonversi file kunci privat Putty ke dalam format OpenSSH) dan melihat apakah ssh localhostberfungsi.
Gilles 'SANGAT berhenti menjadi jahat'
direktori home saya dapat ditulis untuk beberapa alasan. Itu memperbaikinya. Masukkan itu sebagai jawaban agar saya bisa menerimanya.
Andrew Redd
stackoverflow.com/questions/6377009/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

28

Jika otentikasi kunci publik tidak berfungsi: pastikan bahwa di sisi server, direktori home Anda ( ~), ~/.sshdirektori, dan ~/.ssh/authorized_keysfile, semua hanya dapat ditulis oleh pemiliknya . Secara khusus, tidak satupun dari mereka harus dapat ditulis oleh grup (bahkan jika pengguna sendirian di grup). chmod 755atau chmod 700tidak apa-apa, chmod 770tidak.

Apa yang harus diperiksa ketika ada sesuatu yang salah:

  • Jalankan ssh -vvvuntuk melihat banyak hasil debug. Jika Anda memposting pertanyaan yang menanyakan mengapa Anda tidak dapat terhubung dengan ssh, sertakan output ini (Anda mungkin ingin menganonimkan nama host dan pengguna).
  • Jika Anda bisa, periksa log server masuk /var/log/auth.log.
  • Jika otentikasi kunci publik tidak berfungsi, periksa kembali izin, terutama bit grup (lihat di atas).
Gilles 'SANGAT berhenti menjadi jahat'
sumber
(dari wiki tag U&L , disalin ke AU )
Gilles 'SO- stop being evil'
1
Jawaban bagus! Saya lupa homedir saya: o
RobAu
Jika Anda menjalankan ssh (atau sshd) versi terbaru, kunci DSA tidak lagi didukung secara default karena masalah keamanan. Satu-satunya perbaikan nyata adalah meningkatkan ke RSA atau kunci yang lebih baik.
Mikko Rantalainen
Saya mengubah izin folder rumah saya dan apa? Saya dikunci dari SSH! Saya mengubah kunci ssh, tidak, server masih menolak koneksi! Saya gila mencoba menemukan solusi dan dengan jawaban Anda dari chmod 700 ke folder rumah saya, ssh mulai bekerja !!!!!!! Terima kasih! Jika koneksi terminal saya terputus saat mencoba mencari solusinya, saya akan benar-benar terkunci dari server. Jadi berhati-hatilah untuk tidak bermain dengan izin folder rumah Anda! (Saya baru saja mengubah izin folder rumah saya, bukan folder .ssh tetapi masih terkunci dari SSH)
Tarik
9

Saya mengalami hal yang sama dan akhirnya menemukan bahwa itu karena saya mengenkripsi direktori home saya. SSH tidak dapat membaca file Authorized_key sampai Anda login, jadi pada dasarnya itu memaksa Anda untuk melakukan otentikasi kata sandi terlebih dahulu. Lihat bagian tentang direktori beranda yang dienkripsi pada tautan berikut:

https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Encrypted_Home_Directory

Willie Wheeler
sumber
5

Jika Anda memeriksa izin pada direktori, dan ada "." tepat setelah mereka, maka Anda mungkin telah mengaktifkan selinux, yang akan mengacaukan pertukaran kunci, dan default untuk identifikasi kata sandi manual.

Anda dapat menonaktifkan SELinux untuk memecahkan masalah dengan mengikuti petunjuk di sini: http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html , atau cukup edit / etc / selinux / config file dan ubah dari "menegakkan" menjadi "dinonaktifkan".

Semoga ini membantu.

tweekd
sumber
Saya telah mengaktifkan selinux, tetapi menonaktifkannya sepertinya tidak memperbaikinya. Apa triknya bagi saya adalah chmod 600 ~/.ssh/authorized_keys- file tersebut dapat ditulis kelompok. (via pyrosoft.co.uk/blog/2013/01/12/… )
David Carboni
Ini membantu saya! Terima kasih!
907
Anda juga harus bisa mendapatkan otentikasi SSH bekerja dengan SELinux dengan mengatur konteks SELinux yang benar. Mengembalikan konteks yang dikonfigurasi sistem pada direktori home Anda ( restorecon ~ -R) adalah titik awal yang baik.
Josh Kelley
4

Saya akan memastikan bahwa pengaturan Anda di / etc / ssh / sshd_config benar.

Untuk memaksakan penggunaan PKI saja dan melarang kata sandi, temukan barisnya

#PasswordAuthentication yes 

di file Anda, batalkan komentar dan atur ke

PasswordAuthenticate no

Saya juga akan membaca keseimbangan pengaturan untuk memastikan semuanya masuk akal. Secara khusus, cobalah untuk memastikan bahwa Anda menggunakan kunci RSA karena DSA diketahui dikompromikan.

cmdematos
sumber
11
Anda sedang menjelaskan cara menonaktifkan otentikasi kata sandi. Ini tidak akan membantu membuat otentikasi kunci publik berfungsi (kunci publik dicoba terlebih dahulu). Andrew: jangan nonaktifkan otentikasi kata sandi sampai Anda yakin otentikasi kunci publik berfungsi!
Gilles 'SO- stop being evil'
2

Salah satu kemungkinan penyebab masalah adalah Anda memiliki kunci DSA tetapi sekarang SSH (tampaknya) default untuk memerlukan kunci RSA. Saya mendapat masalah saat meningkatkan ke 16,04. Anda dapat melihat lebih banyak di sini tetapi jawaban singkatnya adalah menambahkan yang berikut ke ~/.ssh/config:

PubkeyAcceptedKeyTypes ssh-dss
DeegC
sumber
1

Saya memperbaiki masalah ini dengan menghapus komentar "PasswordAuthentication yes" di / etc / ssh / sshd_config.

Ben Ernest
sumber
1

Karena kebutuhan untuk pemecahan masalah komunikasi antara dua mesin yang berbeda, saya memiliki dua kunci pribadi di ~/.sshsisi klien.

Alih-alih mengonfigurasi setiap host server dengan kunci privat masing-masing ~/.ssh/identityseperti yang seharusnya saya lakukan, saya mengonfigurasi kunci sekunder (dan dalam hal ini salah) untuk semua host:

Host *
IdentityFile ~/.ssh/identity_b

Memperbaiki ~/.ssh/identitymasalah yang diselesaikan:

Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b
Uli Klumpp
sumber
0

Saya hanya memiliki masalah yang sama tetapi mengubah izin dengan chmodtidak membantu, karena ternyata saya tidak memiliki kepemilikan ~/.ssh/authorized_keysfile tersebut. Anda dapat mengubah kepemilikan .sshdirektori dengan:

sudo chown -R "$USER" ~/.ssh
Nick
sumber
-1

Entah bagaimana ini berhasil bagi saya:

root @ kaiser: ~ # vim / etc / ssh / sshd_config

Ubah baris ini dari yes ke no 28 StrictModes no

Coba lagi

sysadmin @ suselinux1: ~> con sysadmin kaiser Selamat datang di Ubuntu 12.04.1 LTS (GNU / Linux 3.2.0-25-generic i686)

Login terakhir: Jumat 9 Nov 15:40:11 2012 dari 10.1.3.25 sysadmin @ kaiser: ~ $ date vie nov 9 17:53:11 CST 2012 sysadmin @ kaiser: ~ $

theunbekanntshadow
sumber
3
Melakukan sesuatu tanpa mengetahui apa yang dilakukannya dan mengapa itu berhasil mungkin dapat diterima, tetapi menyarankan hal yang sama itu buruk, dan untuk bersikap adil, lebih buruk jika berurusan dengan sistem keamanan.
Mahesh
2
sepakat. biarkan ini menjadi insentif untuk membuat sshddokumen yang lebih baik , yang tidak persis termasuk dalam kategori "pembacaan Sabtu yang bagus"
code_monk