Автоматический запуск скриптов на сервере после подключения по ssh
Как автоматически запустить скрипт на сервере вскоре после того, как клиентская система установит ssh-соединение с сервером
Например: предположим, что пользователь войдет в мой компьютер из другой системы (подключенной через LAN), используя соединение SSH. В то время сценарий (python или shell) должен автоматически запускаться в моей системе для выполнения некоторой проверки?
Как автоматически запустить скрипт в серверной системе?
2 ответа
Вы можете сделать это, добавив следующий параметр в ваш файл конфигурации (/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.
Другой вариант - использовать файлы.ssh / rc для каждого пользователя.
Чтобы использовать метод ForceCommand, вы просто добавляете ForceCommand /usr/bin/ownscript
внизу файла /etc/ssh/sshd_config
(на сервере).
Сценарий выглядит так:
#!/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
Не забудьте chmod скрипт sudo chmod +x /usr/bin/ownscript
Вы можете создать /etc/ssh/sshrc
файл. Видеть man 8 ssh
, Если вы хотите это для одного пользователя, используйте ~/.ssh/rc
,
Вот образец /etc/ssh/sshrc
он будет уведомлять вас через dbus, когда кто-то входит в систему на вашей машине. Не забудь 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"
Для выполнения скрипта во время входа в систему добавьте его как вызов из скрипта /etc/profile. Это выполняется для каждого входа в систему, а не только для входа в систему SSH.