Izinkan root untuk masuk melalui ssh hanya dengan otentikasi berbasis kunci

49

Saya memiliki beberapa keraguan tentang konfigurasi server ssh tertentu /etc/ssh/sshd_config. Saya ingin perilaku selanjutnya:

  1. Otentikasi kunci publik adalah satu-satunya cara untuk mengotentikasi sebagai root (tidak ada otentikasi kata sandi atau lainnya)
  2. Pengguna normal dapat menggunakan keduanya (otentikasi kata sandi dan kunci publik)

Jika saya atur PasswordAuthentication nopoin pertama saya puas tetapi bukan yang kedua. Ada cara untuk mengatur PasswordAuthentication nohanya untuk root?

mavillan
sumber

Jawaban:

78

Anda dapat melakukan ini menggunakan PermitRootLoginarahan. Dari halaman sshd_configmanual:

Menentukan apakah root dapat masuk menggunakan ssh (1). Argumennya harus “ya”, “tanpa kata sandi”, “hanya dipaksa-perintah”, atau “tidak”. Standarnya adalah "ya".

Jika opsi ini diatur ke "tanpa kata sandi", otentikasi kata sandi dinonaktifkan untuk root.

Berikut ini akan mencapai apa yang Anda inginkan:

PasswordAuthentication yes
PermitRootLogin without-password
jordanm
sumber
1
Saya mencoba ini di Debian dan diverifikasi dengan service ssh restartdi server dan kemudian pada klien saya mencoba menghubungkan tanpa kunci saya dengan ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@hostdan memang tidak bisa login dengan kata sandi tetapi bisa dengan kunci untuk pengguna root.
bastian
Ya tetapi jika Anda hanya melakukan ini sebagai gantinya, maka Anda dapat masuk dengan kata sandi: ssh -o PreferredAuthentications=password root@hostimho tidak terlalu aman
geoidesic
2
Pada tahun 2019 itu adalah "PermitRootLogin larangan kata sandi", yang lama tanpa kata sandi adalah alias ditinggalkan.
vbraun
10

Anda dapat menggunakan Matchblok untuk mengonfigurasi beberapa opsi per pengguna atau grup yang mengotentikasi atau per alamat IP atau nama host dari asal koneksi.

PasswordAuthentication yes
PermitRootLogin yes

Match User root
PasswordAuthentication no
Gilles 'SANGAT berhenti menjadi jahat'
sumber
3
Saya berhasil mengunci saya dari server ssh saya melakukan ini.
Richard Metzler
Ini tampaknya metode terbaik jika Anda tidak ingin prompt kata sandi muncul untuk root.
Leo
Ini juga telah mengunci saya. Saya pikir itu mungkin dalam urutan yang salah ...
Gary
3

Saya memiliki pendekatan yang bahkan lebih ketat untuk memberikan hak akses root di server saya, yang mungkin menarik untuk yang paranoid seperti saya. Berhati-hatilah dengan apa yang Anda lakukan dan urutannya, jika tidak, Anda mungkin berakhir dengan sistem yang tidak dapat Anda akses root.

  • Buat grup tertentu sugroup, yang anggota akan diizinkan menjadi root dan hanya mengizinkan otentikasi kunci untuk grup ini dengan meletakkan baris berikut di akhir sshd_confid:

Match Group sugroup

PasswordAuthentication no

  • Tempatkan perintah auth required pam_wheel.so group=sugroupdi /etc/pam.d/su. Mungkin sudah ada di sana dan Anda hanya perlu menghapusnya. Ini menolak akses root ke semua pengguna bukan anggota sugroup
  • Pilih kata sandi root yang kuat :)
  • Periksa apakah metode otentikasi baru Anda berfungsi, dan hanya jika:
  • Tolak login root langsung melalui ssh dengan menggunakan PermitRootLogin nodi /etc/ssh/sshd_config.

Dengan menggunakan konfigurasi ini, Anda perlu menggunakan otentikasi kunci dan kata sandi untuk menjadi root. Saya mengkonfigurasi server saya seperti ini, karena saya lebih suka tidak memiliki akses root langsung melalui ssh, terlepas dari metode otentikasi.

xwst
sumber