Я хотел бы знать, как я могу выполнить сценарий локального сервера, например, отправьте почту с помощью mailx, когда ssh сессия открыта, этап перед входом в систему.
Когда соединение SSH входит в сервер, я хотел бы к действию предварительный вход в систему сценария.
пример...
Client_SSH >> **{server_script_exec}** >> login_prompt >> Server [login failed]
Я попытался искать это, но я только, кажется, получаю сценарии, которые выполняются после входа в систему, как через .bashrc
Я знаю, что открываю меня некоторая лавинная рассылка, однако я хотел бы узнать о процессе перед входом в систему. Сервер находится в управляемой среде, и не выставлен www.
Можно использовать PAM для этого. Конфигурация PAM для сервиса SSH находится в /etc/pam.d/sshd
. Для выполнения команды перед чем-либо в процессе входа в систему добавьте что-то как:
auth [default=ignore] pam_exec.so /path/to/some/script
Например, если я использую /usr/local/bin/foo.sh
содержа:
#! /bin/sh
cat <<EOF >>/tmp/log
PAM_RHOST $PAM_RHOST
PAM_RUSER $PAM_RUSER
PAM_SERVICE $PAM_SERVICE
PAM_TTY $PAM_TTY
PAM_USER $PAM_USER
PAM_TYPE $PAM_TYPE
EOF
И затем я делаю ssh muru@localhost
, Я добираюсь:
$ cat /tmp/log
PAM_RHOST localhost
PAM_RUSER
PAM_SERVICE sshd
PAM_TTY ssh
PAM_USER muru
PAM_TYPE auth
Этого не происходит, прежде чем подсказка пароля обнаруживается, но auth
модули являются первыми, бежит за паролем, вводится - они проверяют, аутентифицируется ли пользователь, в конце концов:
authentication - authenticate a user and set up user credentials.
Typically this is via some challenge-response request that the user
must satisfy: if you are who you claim to be please enter your
password. Not all authentications are of this type, there exist
hardware based authentication schemes (such as the use of smart-cards
and biometric devices), with suitable modules, these may be substituted
seamlessly for more standard approaches to authentication - such is the
flexibility of Linux-PAM.
Так, в действительности, auth
модули, выполненные перед входом в систему, и если первое auth
модуль pam_exec
, это - в значительной степени первая вещь работать.
Отметьте [default=ignore]
часть - с тех пор auth
модули аутентифицируют пользователя, мы не хотим, чтобы статус выхода сценария означал что-либо. default=ignore
говорит PAM игнорировать pam_exec
возвращаемое значение, независимо от того, что это может быть, который в свою очередь зависит от статуса выхода сценария. Посмотрите man pam.d
для получения дополнительной информации.
Протесты:
PermitEmptyPasswords no
, таким образом, SSH отклоняет тех, которые из руки).UsePAM yes
чтобы это использовало PAM.