ユーザーに完全なログインアクセス権を与えずに、単一のコマンドを許可するようにSSHdを構成するにはどうすればよいですか?


11

SSH経由でリモートコマンドを呼び出す最適な方法を探しています。ユーザー「rpcall」を作成し、新しい証明書を生成してauthorized_keysに入力します。でもう少し安全に

from="ip",no-agent-forwarding,no-X11-forwarding,no-port-forwarding,no-pty ssh-rsa ......

現在、ユーザーrpcallは端末にログインできません

ssh -l rpc 192.168.12.1
PTY allocation request failed on channel 0

しかし、任意のコマンドを実行することは可能です

ssh -l rpc 192.168.12.1 cat /etc/passwd

コマンドの実行を1つの処理スクリプトのみに制限できるソリューションはありますか?たとえば、/ home / rpcall / bin / command.sh

このユーザー用にbashシェルをセットアップし、.bashrc強制実行処理スクリプトを使用しましたが、ssh呼び出しからパラメーターを渡す方法がわかりません。

ユーザーrpcallの.bashrc

/home/rpcall/bin/command.sh $params1 $params2
exit

他のマシンからのssh呼び出し

ssh -l rpcall 192.168.12.1 "param1" "param2"

回答:


19

authorized_keysファイルを使用してコマンドを制限できます。command="/home/rpcall/bin/command.sh"authorized_keysファイルでキーの前に置くと、ユーザーは接続したときにのみそのコマンドを実行します。

authorized_keysのmanページを確認してください。これはそのmanページからのものです。

 command="command"
         Specifies that the command is executed whenever this key is used
         for authentication.  The command supplied by the user (if any) is
         ignored.  The command is run on a pty if the client requests a
         pty; otherwise it is run without a tty.  If an 8-bit clean chan-
         nel is required, one must not request a pty or should specify
         no-pty.  A quote may be included in the command by quoting it
         with a backslash.  This option might be useful to restrict cer-
         tain public keys to perform just a specific operation.  An exam-
         ple might be a key that permits remote backups but nothing else.
         Note that the client may specify TCP and/or X11 forwarding unless
         they are explicitly prohibited.  The command originally supplied
         by the client is available in the SSH_ORIGINAL_COMMAND environ-
         ment variable.  Note that this option applies to shell, command
         or subsystem execution.

複数のコマンドが必要な場合は、基本的に複数のキーセットをセットアップし、異なるキーを使用して異なるコマンドを提供する必要があります。

編集:元のコマンドはSSH_ORIGINAL_COMMAND環境変数で使用できるため、独自のスクリプトを使用してその入力を実際に処理し、巧妙な操作を行うことができます。


4
指定されたコマンドは、SSH_ORIGINAL_COMMAND環境変数を介してパラメーターにアクセスできます。この方法でパラメーターをそのコマンドに渡すことができます。その環境変数を解析し、要求された作業を行うだけです。
オリバー

うん、私もそれに気づいたときに数分前に答えを更新しました。
EightBitTony

コマンドオプションとSSH_ORIGINAL_COMMANDを備えた完璧なソリューション、まさに私が必要なもの。EightBitTonyとOliverに感謝します!
アンドリュー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.