ログイン前の段階で、sshセッションが開かれたときに、mailxを使用してメールを送信するなど、ローカルサーバースクリプトを実行する方法を知りたいのですが。
ssh接続がサーバーに着信したとき、スクリプトの事前ログインを実行したいと思います。
例...
Client_SSH >> **{server_script_exec}** >> login_Prompt >> Server [login failed]
これを検索しようとしましたが、.bashrc
などを介して、ログイン後に実行されるスクリプトのみを取得しているようです。
洪水にさらされていることはわかっていますが、ログイン前のプロセスについて学びたいと思います。サーバーは制御された環境にあり、wwwに公開されていません。
これには PAM を使用できます。 SSHサービスのPAM設定は/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_exec
の戻り値を無視するようにPAMに指示します。これは、スクリプトの終了ステータスに依存します。詳細については、 man pam.d
を参照してください。
警告:
PermitEmptyPasswords no
があるため、SSHはそれらを手に入れられません)。UsePAM yes
が必要です。