Bagaimana saya bisa mengizinkan otentikasi kata sandi SSH dari hanya alamat IP tertentu?

103

Saya ingin mengizinkan otentikasi kata sandi SSH hanya dari subnet tertentu. Saya melihat opsi untuk melarangnya secara global di /etc/ssh/sshd_config:

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

Apakah ada cara untuk menerapkan konfigurasi ini ke rentang alamat IP tertentu?

ændrük
sumber

Jawaban:

156

Gunakan Matchblok pada akhir dari /etc/ssh/sshd_config:

# Global settings
…
PasswordAuthentication no
…

# Settings that override the global settings for matching IP addresses only
Match address 192.0.2.0/24
    PasswordAuthentication yes

Kemudian beri tahu layanan sshd untuk memuat ulang konfigurasinya:

service ssh reload
Gilles
sumber
1
Saya mencoba ini (dengan 192.168.0.0/16 sebagai gantinya) dan ketika saya me-restart layanan ssh saya terkunci. SSH menolak koneksi apa pun. Adakah yang tahu mengapa ini bisa terjadi?
Air Terjun Michael
2
@MichaelWaterfall Tidak mungkin untuk mengatakan dengan informasi yang sangat sedikit. Pastikan shell tetap berjalan sampai Anda memvalidasi konfigurasi baru. Restart layanan ssh tidak mempengaruhi koneksi aktif.
Gilles
28
Masalah yang mungkin terjadi adalah Anda meletakkan blok Match di suatu tempat di tengah sshd_config Anda. Baris pencocokan memengaruhi setiap baris berikut hingga baris Match berikutnya, sehingga harus berada di akhir file.
Ken Simon
6
Meskipun lekukan dalam jawaban, sshd_configbukan Python;)
Nick T
1
@ frepie MatchBlok ini diperpanjang hingga Matcharahan berikutnya atau sampai akhir file. Itu sebabnya Anda harus meletakkannya di akhir.
Gilles
8

Anda dapat menambahkan:

AllowUsers [email protected].*.*, [email protected].*.*

ini mengubah perilaku default, benar-benar menolak semua pengguna lain dari semua host. Blok pencocokan tersedia di OpenSsh versi 5.1 dan di atasnya.

glooch
sumber
sebut saya izinkan grup alih-alih satu pengguna
Lamar
@Lamar From man sshd_config, sepertinya AllowGroupsberfungsi sama dengan AllowUsers, tetapi AllowUserstampaknya lebih diutamakan AllowGroups.
conradkdotcom