Saya membutuhkan 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 di direktori HOME saya disetel ke 770 (terlepas dari izin yang disetel untuk .ssh/), tetapi itu berfungsi dengan izin yang disetel 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 home disetel lebih permisif dari 700?
Jawaban yang Diterima:
Ini adalah perilaku default untuk SSH. Ini melindungi kunci pengguna dengan menerapkan rwx-------code> di
$HOME/.ssh
dan memastikan hanya pemilik yang memiliki izin menulis ke $HOME
. Jika pengguna selain pemilik masing-masing memiliki izin menulis di $HOME
direktori, mereka dapat dengan jahat mengubah izin pada $HOME/.ssh
, berpotensi membajak kunci pengguna, known_hosts
, atau yang serupa. Singkatnya, izin berikut pada $HOME
akan cukup bagi SSH untuk bekerja.
rwx-------code>
rwxr-x---
rwxr-xr-x
SSH tidak akan bekerja dengan benar dan akan mengirimkan peringatan ke fasilitas log jika ada variasi g+w
atau o+w
ada di $HOME
direktori. Namun, administrator dapat mengesampingkan perilaku ini dengan mendefinisikan StrictModes no
di sshd_config
(atau serupa) file konfigurasi, meskipun harus jelas bahwa ini tidak disarankan .