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


11

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

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

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


回答:


14

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


答えてくれてありがとう。コマンドの例を教えてください
愛好家

しかし、強制コマンドがサーバー(管理者ログイン)またはクライアントログインでコマンドを実行するかどうか?サーバーログインでコマンドを実行したい
愛好家

1
コマンドはサーバーで発行されます。構成の最後にForceCommand /path/command.scriptを追加するだけでうまくいきます。ただし、このコマンドを実行するだけなので、スクリプトファイルでシェルを起動する必要があります。読みやすくするために、元の回答に例を追加します。
Requist

ありがとうございました。シェルスクリプトの代わりにPythonスクリプトを実行できますか?
愛好家

?実行得たので、私のコマンドをログインうち(私が知りたい利用者のIPアドレスとログイン名を取得するためにどのような方法がありますが、私は私のカスタムコマンドを実行すると仮定
熱狂的ファン

4

/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"

1

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


ssh接続を使用して接続されたクライアントシステムのみに関心がある
愛好家

1
すべてのシェルが/ etc / profileをソースするわけではないため、ユーザーが異なるシェルを使用している場合、これは一貫して機能しません。
-bschlueter
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.