web-dev-qa-db-ja.com

SSH接続後にサーバーでスクリプトを自動的に実行する

クライアントシステムがサーバーとのssh接続を確立した直後にサーバーでスクリプトを自動的に実行する方法

例:ユーザーがssh接続を使用して別のシステム(LAN経由で接続)からコンピューターにログオンするとします。その時点で、システムでスクリプト(pythonまたはShell)を自動的に実行して、検証を実行する必要がありますか?

サーバーシステムでスクリプトを自動的に実行する方法

11
Enthusiast

これを行うには、構成ファイル(/ 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

スクリプトSudo chmod +x /usr/bin/ownscriptをchmodすることを忘れないでください

13
Requist

ログオン中にスクリプトを実行するには、/ etc/profileスクリプト内から呼び出しとして追加します。これは、sshログオンだけでなく、ログオンごとに実行されます。

0
William Peckham