Ssh tidak akan membiarkan saya masuk, karena akun terkunci. Saya ingin membuka kunci pengguna di server saya untuk otorisasi kunci publik melalui ssh, tetapi tidak mengaktifkan login yang di-password.
Saya sudah mencoba:
# passwd -u username
passwd: unlocking the password would result in a passwordless account.
You should set a password with usermod -p to unlock the password of this account.
Entri log auth:
Mar 28 00:00:00 vm11111 sshd[11111]: User username not allowed because account is locked
Mar 28 00:00:00 vm11111 sshd[11111]: input_userauth_request: invalid user username [preauth]
passwd -u
adalah ide yang buruk. Lihat jawabannya oleh Giles di bawah.Jawaban:
Buka kunci akun dan berikan kata sandi yang rumit kepada pengguna seperti yang disarankan @Skaperen.
Edit
/etc/ssh/sshd_config
dan pastikan Anda memiliki:Pastikan baris tidak dikomentari (
#
di awal) dan simpan file. Akhirnya, restartsshd
layanan.Sebelum Anda melakukan ini, pastikan otentikasi kunci publik Anda berfungsi lebih dulu.
Jika Anda perlu melakukan ini hanya untuk satu (atau sejumlah kecil) pengguna, biarkan tetap
PasswordAuthentication
diaktifkan dan gunakanMatch User
:Tempatkan di bagian bawah file karena valid hingga
Match
perintah berikutnya atau EOF.Anda juga bisa menggunakan
Match Group <group name>
atau negasiMatch User !bloggs
Seperti yang Anda sebutkan di komentar, Anda juga dapat membalikkannya sehingga Otentikasi Kata Sandi dinonaktifkan di bagian utama konfigurasi dan menggunakan
Match
pernyataan untuk mengaktifkannya untuk beberapa pengguna:sumber
Match
sintaks terlihat bagus, tapi aku akan mencobanya terbalik. Aktifkan login dengan kata sandi untuk pengguna (sedikit lumpuh).Apa pun yang Anda lakukan, jangan tinggalkan akun dalam keadaan ditinggalkan
passwd -u
, dengan bidang kata sandi kosong: yang memungkinkan login tanpa memasukkan kata sandi (kecuali melalui SSH, karena SSH menolak itu).Ubah akun untuk tidak memiliki kata sandi, tetapi dibuka kuncinya. Akun tidak memiliki kata sandi jika hash kata sandi dalam basis data kata sandi bukan hash dari string apa pun. Secara tradisional, string satu karakter seperti
*
atau!
digunakan untuk itu.Akun yang dikunci juga menggunakan penanda khusus di bidang kata sandi yang menyebabkan string tidak menjadi hash string apa pun. Marker tergantung pada sistem. Di Linux,
passwd
perintah menandai kata sandi yang dikunci dengan meletakkan a!
di awal, dan OpenSSH memperlakukan akun sebagai terkunci jika bidang dimulai dengan!
. Varian Unix lain cenderung menggunakan mekanisme yang serupa tetapi tidak identik, jadi berhati-hatilah jika basis data kata sandi Anda dibagikan di antara jaringan yang heterogen.Di Linux, Anda dapat menonaktifkan akses berbasis kata sandi ke akun sembari mengizinkan akses SSH (dengan beberapa metode otentikasi lainnya, biasanya pasangan kunci) dengan
Pengguna tidak akan dapat mengubah kembali akun untuk memiliki kata sandi, karena itu mengharuskan mereka untuk memasukkan kata sandi yang valid.
Jika mau, Anda dapat mengonfigurasi SSH untuk menolak otentikasi kata sandi, terlepas dari apakah akun tersebut memiliki kata sandi. Anda masih harus mengatur agar SSH tidak menganggap akun terkunci, jadi misalnya di Linux Anda harus menghapus
!
dari bidang kata sandi (tetapi jangan kosongkan bidang tersebut - setel*
seperti dijelaskan di atas) ). Untuk menonaktifkan otentikasi kata sandi untuk SSH, tambahkanPasswordAuthentication
arahan ke/etc/sshd_config
atau/etc/ssh/sshd_config
(mana saja itu di sistem Anda). GunakanMatch
blok untuk membuat arahan itu hanya berlaku untuk pengguna tertentu;Match
blok harus munculsumber
usermod -p '*' username
bekerja dengan sangat baik!!
awalan) untuk login dengan beberapa metode otentikasi lain jikaUsePAM yes
diatursshd_config
. Ini mungkin default dengan sebagian besar distribusi (misalnya dengan Fedora).'*'
vs'!'
sangat berguna.Anda tidak perlu mengaktifkan atau mengatur kata sandi, dan Anda seharusnya tidak melakukannya, jika Anda sudah menggunakan kunci yang kuat. Cukup kunci kembali akun Anda (sudo passwd -l nama pengguna) dari sesi yang ada dan perbaiki konfigurasi SSH Anda.
Alasan mengapa hal ini terjadi mungkin karena Anda telah mengedit salah satu pengaturan daemon SSH default (di / etc / ssh / sshd_config).
Ubah ini di / etc / ssh / sshd_config dan mulai ulang SSH:
Secara umum, kecuali Anda memiliki alasan yang sangat bagus untuk menonaktifkan PAM, saya sarankan Anda tetap mengaktifkannya; mengaktifkan PAM dalam SSH akan memungkinkan Anda untuk tetap masuk, bahkan dengan kata sandi yang dihapus. Apa pun yang Anda lakukan, jangan setel kata sandi kosong atau sejenisnya ... mengunci bidang kata sandi tidak harus berarti mengunci seluruh akun Anda.
Kiat cepat saat bermain-main dengan SSH: biarkan sesi lain tetap terbuka (di jendela lain) setiap kali melakukan perubahan pada konfigurasi SSH Anda, dan kemudian uji bahwa Anda masih dapat masuk; jika Anda secara tidak sengaja merusak akses Anda, gunakan sesi Anda saat ini untuk memperbaikinya.
(Penafian: Saya bekerja di Userify, yang menyediakan perangkat lunak manajemen kunci SSH.)
sumber
Saya memiliki masalah ini pada CentOS 7. Saya adalah pengguna Linux berbasis Debian yang biasa jadi saya adalah ikan yang keluar dari air. Saya perhatikan bahwa di beberapa server itu bekerja dan hanya dalam satu server tidak. Audit.log mengatakan tidak ada yang berguna dan secure.log tidak memberikan apa-apa juga. Saya menemukan bahwa satu-satunya perbedaan nyata adalah beberapa perbedaan konteks keamanan pada file dan direktori antara yang bekerja dan yang tidak. Dapatkan keamanannya
sudo ls -laZ <user-home>/.ssh
direktori (saya mengasumsikan banyak default di sshd_config).
Anda harus melihat beberapa
ssh_home_t
danuser_home_t
atribut. Jika tidak, gunakanchcon
perintah untuk menambahkan atribut yang hilang.Sebagai contoh
Dalam kasus saya, kecurigaan saya adalah bahwa pengguna dibuat dengan cara yang tidak standar. Rumahnya adalah direktori di
/var/lib
.Info lebih lanjut di: https://www.linuxquestions.org/questions/linux-security-4/selinux-preventing-ssh-login-with-~-ssh-authorized_keys-4175469538/
sumber
buka kunci akun dan ubah kata sandi menjadi string acak
sumber