Izin SSH dan direktori home

53

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?

action_potato
sumber
1
Konfirmasikan jawaban di bawah ini; masalahnya adalah izin grup pada folder beranda tidak diset dengan benar (pesan kesalahan dari auth.log adalah: 'Otentikasi ditolak: kepemilikan buruk atau mode untuk direktori / home / <user>'). Saya melihat SSH benar untuk pilih-pilih tentang izin dir rumah.
action_potato
5
Tahukah Anda tentang tag wiki yang kami miliki di sini? Jika Anda mengklik ssh lalu learn more, Anda akan melihat daftar periksa untuk apa yang harus dilakukan ketika SSH tidak berfungsi, dan itu menyebutkan izin direktori home.
Gilles 'SO- stop being evil'
Ah, maaf saya tidak tahu tentang itu! Terimakasih atas peringatannya.
action_potato

Jawaban:

54

Ini adalah perilaku default untuk SSH. Ini melindungi kunci pengguna dengan menegakkan rwx------pada $HOME/.sshdan memastikan hanya pemilik memiliki hak akses tulis untuk $HOME. Jika pengguna selain pemiliknya masing-masing memiliki izin menulis pada $HOMEdirektori, mereka dapat memodifikasi izin dengan jahat $HOME/.ssh, berpotensi membajak kunci pengguna known_hosts,, atau yang serupa. Singkatnya, izin berikut pada $HOMEakan 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+watau o+wada di $HOMEdirektori. Namun, administrator dapat mengganti perilaku ini dengan mendefinisikan StrictModes nodalam sshd_configfile konfigurasi (atau yang serupa), meskipun harus jelas bahwa ini tidak dianjurkan .

George M
sumber
1
Terima kasih telah menyebutkan 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.
intelfx
31

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.

jippie
sumber