Butuh waktu berjam-jam untuk menyelesaikan masalah SSH ini dengan salah satu akun kelas saya di server sekolah saya.
Saya tidak dapat ssh ke satu akun kelas tertentu tanpa memasukkan kata sandi saya, sementara otentikasi tanpa kata sandi bekerja dengan akun kelas saya yang lain. Direktori .ssh / dan semua isinya memiliki izin yang sama dan benar seperti akun kelas lainnya.
Ternyata masalahnya adalah izin yang ditetapkan pada direktori home saya sendiri. Otentikasi tanpa kata sandi tidak berfungsi ketika izin pada direktori HOME saya disetel ke 770 (terlepas dari izin yang ditetapkan untuk .ssh /), tetapi itu berfungsi dengan izin yang diatur ke 755 atau 700.
Adakah yang tahu mengapa SSH melakukan ini? Apakah karena izin direktori home terlalu permisif? Mengapa SSH menolak untuk mengautentikasi dengan kunci publik / pribadi ketika direktori rumah ditetapkan lebih permisif daripada 700?
sumber
learn more
, Anda akan melihat daftar periksa untuk apa yang harus dilakukan ketika SSH tidak berfungsi, dan itu menyebutkan izin direktori home.Jawaban:
Ini adalah perilaku default untuk SSH. Ini melindungi kunci pengguna dengan menegakkan
rwx------
pada$HOME/.ssh
dan memastikan hanya pemilik memiliki hak akses tulis untuk$HOME
. Jika pengguna selain pemiliknya masing-masing memiliki izin menulis pada$HOME
direktori, mereka dapat memodifikasi izin dengan jahat$HOME/.ssh
, berpotensi membajak kunci penggunaknown_hosts
,, atau yang serupa. Singkatnya, izin berikut pada$HOME
akan cukup untuk SSH berfungsi.rwx------
rwxr-x---
rwxr-xr-x
SSH tidak akan bekerja dengan benar dan akan mengirimkan peringatan ke fasilitas log jika ada variasi
g+w
atauo+w
ada di$HOME
direktori. Namun, administrator dapat mengganti perilaku ini dengan mendefinisikanStrictModes no
dalamsshd_config
file konfigurasi (atau yang serupa), meskipun harus jelas bahwa ini tidak dianjurkan .sumber
StrictModes no
. Dalam pengaturan saya, ACL dikonfigurasi pada direktori home pengguna target dan semua keturunan untuk memungkinkan modifikasi oleh pengguna semiprivileged (u:operator:rwx
), dan SSH tidak suka ini.77x pada direktori home Anda berarti bahwa setiap orang dengan GID yang benar dapat memindahkan direktori .ssh Anda dan menggantinya dengan yang lain. Pengguna dengan GID yang benar memiliki izin menulis / exec pada direktori home dan karenanya dapat mengganti nama / membuat file / direktori.
SSH sangat pemilih dalam hal perizinan, dan memang seharusnya begitu.
sumber