SSHを許可しますが、特定のスクリプトのみを実行します。

SSHを許可しますが、特定のスクリプトのみを実行します。

重複の可能性:
1 つのコマンドのみを実行する UNIX アカウントの作成

既存のユーザーアカウントXXXを介して実行する必要があるシェルスクリプトがあります。これで、ユーザーアカウントXXXにアクセスせずにこのスクリプトを実行できる他のさまざまなユーザーがあります。 XXXのパスワードを知らず、ユーザーXXXの特定のシェルスクリプトの実行のみを許可するsshコマンド(おそらくキーや他のものを介して)を生成する方法はありますか?

ベストアンサー1

スクリプトを実行する場合ただ他のユーザーができることがある場合は、SSHキーを使用します。

各ユーザーは独自のSSHキーを持っている必要があり、誰かがアクセスできなくても問題は発生しません。鍵の公開部分を入れる必要があります。

~scriptuser/.ssh/authorized_keys

実際のキーの前にテキストを追加する必要があります。command="/path/to/script"

例は次のとおりです。

from="10.23.5.32",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/path/to/script"  ssh-dss A........

これは、キーを使用できるIPアドレスを制限し、実行できる転送の種類を制限し、キーを使用するときにptyが付与されず、ユーザーがキーを使用して接続するたびにスクリプトが実行されることを保証します。他のことは起こらないでしょう。

環境変数を追加するには、キーに追加するだけです。

from="10.23.5.32",environment="MYVARIABLE=whatever",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/path/to/script"  ssh-dss A........

ただし、これが正しく機能するには、PermitUserEnvironmentsshd構成ファイルでこのディレクティブを「yes」に設定する必要があります。これを実行できない場合は、その行を次のように変更できます。

from="10.23.5.32",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="export MYVARIABLE=whatever; /path/to/script"  ssh-dss A........

おすすめ記事