Ssh login hook?

15

Apakah ada cara untuk menjalankan skrip / perintah setiap kali pengguna terhubung menggunakan ssh? Apakah bisa dikonfigurasi secara global (mis. Jalankan skrip ketika ada pengguna yang masuk)?

Saya menemukan pertanyaan ini pada Identica, tetapi belum ada jawaban dan ingin mengetahuinya.

phhehehe
sumber

Jawaban:

11

Untuk semua pengguna, atau pengguna tertentu? Untuk satu pengguna, atur di .bashrcfile mereka ; untuk semua pengguna, lihat pam_exec .

Jika pengguna berasal dari sshd, Anda ingin menambahkan baris berikut ke /etc/pam.d/sshd; file lain tergantung pada sumbernya:

session optional pam_exec.so seteuid  /path/to/my/hook.sh

Untuk tujuan pengujian, modul disertakan sebagai optional, sehingga Anda masih dapat masuk jika gagal. Setelah Anda memastikan itu berfungsi, Anda dapat mengubahnya optionalmenjadi required. Maka login tidak akan mungkin dilakukan kecuali eksekusi skrip hook Anda berhasil.

Catatan: Seperti biasa ketika Anda mengubah konfigurasi login, biarkan shell cadangan terbuka di latar belakang dan uji login dari terminal baru.

Glen Solsberry
sumber
Terima kasih, itu terlihat menjanjikan. Bisakah Anda menguraikan lebih banyak? Saya tidak terbiasa dengan ini.
phunehehe
Saya kira saya harus menambahkan session include pam_exec.so seteuid /path/to/scriptke file /etc/pam.d/system-remote-login. Apakah itu benar?
phunehehe
Entah system-remote-loginatau sshd, tergantung pada bagaimana pengguna masuk.
Glen Solsberry
Luar biasa! Alangkah baiknya jika Anda mengedit jawaban untuk memasukkan informasi (Anda tahu, untuk orang lain yang mencarinya).
phunehehe
Catatan untuk orang googling, Anda juga dapat menempatkan baris ini auth optional pam_exec.so /path/to/my/hook.shdi /etc/pam.d/common-authuntuk memiliki PAM memberitahukan APAPUN peristiwa otentikasi yang terjadi. Program ini juga dapat mengirimi Anda pemberitahuan push: github.com/benjojo/PushAlotAuth
Nick Sweeting
6

ada cara lain yang hanya memengaruhi pengguna menggunakan ssh bukan yang lokal (yang mungkin lebih baik dalam situasi darurat)

lihat cuplikan dari halaman ssh man di bawah ini.

dalam hal ini pengguna biasanya dapat memodifikasi file itu sendiri (sedikit seperti .bashrc)

 ~/.ssh/rc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.

dan ini bersifat global dan tidak dapat dimodifikasi oleh pengguna normal

 /etc/sshrc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.
Marcel G
sumber
2
Tetapi / etc / sshrc akan dieksekusi hanya jika pengguna tidak memiliki ~ / .ssh / rc, sehingga pengguna ini dapat mem
isevcik
2
@isevcik, itu hanya jika PermitUserRC diatur ke "ya" di /etc/ssh/sshd_config(lihat man sshd_configuntuk detail)
jeremysprofile