Mengapa login otomatis melalui ssh dengan otor_keys berfungsi?


12

Saya telah membuat dsa-keypair pribadi / publik. Saya telah memasukkan kunci publik di server

~/.ssh/authorized_keys

Semuanya diatur seperti server saya yang lain, tetapi sepertinya server mengabaikan usaha saya.


Periksa /etc/ssh/ssh_configdan /etc/ssh/sshd_configverifikasi bahwa tidak ada yang Anda inginkan dinonaktifkan.
Kristopher Johnson

Anda juga ingin memeriksa sshd_config.
Vagnerr

Terima kasih. Saya memperbarui jawabannya (yang semula hanya disebutkan ssh_config).
Kristopher Johnson

Semua diskusi di atas sempurna untuk jika Anda menggunakan gaya ssh openssh. Jika sistem Anda menggunakan ssh2 maka ia memiliki cara yang benar-benar aneh untuk mengelola kunci. Artikel ini membahas tentang bagaimana dan apa. burnz.wordpress.com/2007/12/14/…
chris

1
Biasanya memeriksa /var/log/auth.logsistem Debian atau /var/log/secureyang RedHat harus memberi Anda saran yang jelas tentang apa yang salah dikonfigurasikan (biasanya masalah izin)
Giovanni Toraldo

Jawaban:


15

Meskipun masalah Anda mungkin telah dipecahkan oleh jawaban lain, saya telah mengunci diri dari cukup banyak mesin karena tidak memvalidasi perubahan sshd_config sebelum keluar jadi buatlah proses di bawah ini yang mungkin berguna untuk debugging perubahan sshd config:

JANGAN PUTUSKAN sambungan ssh yang aktif sampai pengujian SETELAH memverifikasi perilaku seperti yang Anda harapkan.

Sebuah. verifikasi apa yang menurut Anda seharusnya dilakukan sshd

b. pastikan konfigurasi tersebut valid menggunakan "-t"

c. mulai versi 'test' dari server yang dapat Anda monitor secara langsung

d. mulai koneksi klien 'tes' verbose Anda dapat hidup memantau


Sebuah. verifikasi apa yang menurut Anda seharusnya dilakukan sshd

Tinjau file konfigurasi sshd tanpa semua komentar dengan sesuatu seperti di bawah ini (dengan asumsi sshd_config adalah file yang benar dan di / etc / ssh)

$ grep -v "^ #" / etc / ssh / sshd_config | grep -v "^ $"

Ini hanya menghapus semuanya sehingga kami memverifikasi apa yang kami pikir sedang kami ubah (tidak harus apakah itu benar atau tidak.)

b. pastikan konfigurasi tersebut valid menggunakan "-t"

Dari halaman manual sshd yang saya gunakan,

Mode uji -t. Hanya periksa validitas file konfigurasi dan kewarasan kunci. Ini berguna untuk memperbarui sshd secara andal karena opsi konfigurasi dapat berubah.

Perubahan lain dapat memiliki keadaan yang lebih halus. Misalnya, jangan nonaktifkan otentikasi kata sandi hingga Anda yakin bahwa otentikasi kunci publik berfungsi dengan benar.

c. mulai versi 'test' dari server yang dapat Anda monitor secara langsung

$ sudo / usr / sbin / sshd -ddd -p 9999

Ini membuat sesi kerja Anda saat ini, aktif, tetapi memberi Anda instance sshd lain untuk memverifikasi perubahan konfigurasi baru Anda. SSHD sekarang berjalan di latar depan ke port yang ditentukan pengguna (9999 dalam contoh kami.) Dan mendorong banyak informasi debug berisik yang dapat Anda lacak di / var / log / authlog (atau mungkin /var/log/auth.log tergantung pada OS Anda.)

d. mulai koneksi klien 'tes' verbose Anda dapat hidup memantau

Jalankan koneksi ssh client dalam mode verbose untuk menampilkan informasi lebih lanjut di layar Anda yang mungkin mengarahkan Anda untuk lebih baik men-debug kesalahan Anda.

$ ssh -vvv -p 9999 nama server

Anda sekarang harus memiliki informasi yang cukup dalam file log server, atau layar koneksi klien untuk mengisolasi masalah Anda.

Solusinya umumnya datang ke mengajukan izin (seperti yang ditunjukkan oleh Magnar dan setatakahashi)

Semoga berhasil


Saya kira Anda juga harus memeriksa file ssh_config di klien untuk memastikan itu melakukan apa yang Anda harapkan. Gunakan sesuatu seperti di bawah ini untuk mengeluarkan komentar:> grep -v "^ #" / etc / ssh / ssh_config | grep -v "^ $"
samt

Nah, konfigurasi ssh klien dapat diperbaiki kapan saja, ini adalah server tempat Anda dikunci jika Anda salah mengonfigurasi.
Soviero

33

Server akan mengabaikan file otor_keys Anda jika properti pemilik salah. Mengubahnya ke ini memperbaikinya:

chmod 0700 ~/.ssh
chmod 0600 ~/.ssh/authorized_keys

6
ssh -vvv -l nama pengguna server.domain akan memberi tahu Anda jika Anda mengirim kunci yang valid
Dave Cheney

Terkadang saya melihat sshd mengeluh tentang izin buruk di direktori home - jadi saya akan menambahkan "chmod o-rwx ~" (atau setidaknya "chmod ow ~") ke daftar seperti yang dilakukan setatakahashi. Ini biasanya menjadi jelas ketika file log dimonitor - pesan kesalahan yang saya lihat di sana selalu menunjuk ke arah yang benar.
Olaf

Jawaban ini tampaknya paling mungkin, tetapi komentar Dave Cheney adalah satu-satunya cara untuk melihat apa yang sebenarnya terjadi. Periksa juga log server.
dwc

Ini masalah saya. Saya memukul kepala saya selama berjam-jam. Terima kasih banyak!
Sam Soffes

1
Ini berhasil, tetapi izin saya sebelumnya adalah masing 0775- 0644masing. Mengapa mengurangi izin membantu? Apakah ini tindakan pencegahan keamanan yang dikonfigurasi di suatu tempat?
Dean

11

$ chmod 700 ~

$ chmod 700 ~ / .ssh

$ chmod 600 ~ / .ssh / otor_keys

Periksa atribut ini di / etc / ssh / sshd_config

$ sudo grep PubkeyAuthentication / etc / ssh / sshd_config

$ sudo grep Protocol / etc / ssh / sshd_config


2
Poin yang sangat baik tentang ~, Anda harus memastikan bahwa tidak ada orang lain selain Anda yang dapat menulis ke direktori home Anda, jika tidak mereka dapat mengganti nama direktori ~ / .ssh Anda
Dave Cheney

chmod terakhir seharusnya: $ chmod 600 ~/.ssh/authorized_keysnot$ chmod 600 ~/.sHh/authorized_keys
SooDesuNe

3
apa yang harus nilai atribut menjadi ?
Michael

0

Perangkap penting lainnya ..

Jika direktori home Anda dienkripsi sshd tidak akan memiliki akses ke ~ / .ssh / official_keys ..

Lihat jawaban ini

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.