Jalankan skrip secara otomatis di server setelah koneksi ssh

11

cara menjalankan skrip secara otomatis di server segera setelah sistem klien membuat koneksi ssh dengan server

sebagai contoh: misalkan pengguna akan masuk ke komputer saya dari sistem lain (terhubung melalui LAN) menggunakan koneksi ssh. Pada saat itu, skrip A (python atau shell) harus dijalankan secara otomatis di sistem saya untuk melakukan validasi?

Bagaimana cara menjalankan skrip secara otomatis dalam sistem server?

Penggemar
sumber
1
Kemungkinan duplikat skrip Run (sistem) pada login SSH dan / atau logout
bschlueter

Jawaban:

14

Anda dapat melakukannya dengan menambahkan parameter berikut ke file config Anda (/ etc / ssh / sshd_config).

 ForceCommand
         Forces the execution of the command specified by ForceCommand, ignoring any command supplied by the client and ~/.ssh/rc if present.  The command is invoked by using the user's login shell
         with the -c option.  This applies to shell, command, or subsystem execution.  It is most useful inside a Match block.  The command originally supplied by the client is available in the
         SSH_ORIGINAL_COMMAND environment variable.  Specifying a command of “internal-sftp” will force the use of an in-process sftp server that requires no support files when used with
         ChrootDirectory.

Opsi lainnya adalah menggunakan file .ssh / rc pada basis per pengguna.

Untuk menggunakan metode ForceCommand Anda cukup menambahkan ForceCommand /usr/bin/ownscriptdi bagian bawah file /etc/ssh/sshd_config(di server).

Scriptnya terlihat seperti ini:

#!/bin/bash
#Script file for ssh
#
#put your commands here
echo "test" > /tmp/test.txt
#
#exit by calling a shell to open for the ssh session
/bin/bash

Jangan lupa chmod skrip sudo chmod +x /usr/bin/ownscript

Meminta kembali
sumber
Terima kasih atas jawabannya. Bisakah Anda memberi contoh perintah
Penggemar
tetapi apakah perintah paksa menjalankan perintah di server (admin masuk) atau masuk klien? Saya ingin menjalankan perintah di login server
Penggemar
1
Perintah dikeluarkan di server. Cukup tambahkan ForceCommand /path/command.script di bagian bawah konfigurasi Anda. Namun, saya temui itu hanya akan menjalankan perintah ini sehingga Anda perlu memulai shell di filefile Anda. Untuk keterbacaan yang lebih baik saya akan menambahkan contoh ke jawaban asli saya.
Requist
Terima kasih. dapatkah saya menjalankan skrip python alih-alih skrip shell?
Penggemar
misalkan saya mengeksekusi perintah kustom saya, Apakah ada cara untuk mengambil alamat IP dan nama login pengguna (saya ingin tahu karena login yang mana perintah saya dieksekusi?
Penggemar
4

Anda dapat membuat /etc/ssh/sshrcfile. Lihat man 8 ssh. Jika Anda menginginkan ini untuk satu pengguna, gunakan ~/.ssh/rc.

Berikut adalah contoh /etc/ssh/sshrcyang akan memberi tahu Anda melalui dbus ketika seseorang masuk pada mesin Anda. Jangan lupa untuk chmod +x:

#!/bin/bash

ip=`echo $SSH_CONNECTION | cut -d " " -f 1`

notify-send -u CRITICAL "SSH connection from ${ip}" "User $USER just logged in from $ip"
leucos
sumber
1

Untuk pelaksanaan skrip selama log masuk, tambahkan sebagai panggilan dari dalam skrip / etc / profile. Ini dijalankan untuk setiap masuk, tidak hanya untuk masuk ssh.

William Peckham
sumber
Saya khawatir hanya sistem klien yang terhubung menggunakan koneksi ssh
Penggemar
1
Ini tidak akan bekerja secara konsisten jika pengguna memiliki shell yang berbeda karena tidak semua source shell / etc / profile.
bschlueter