web-dev-qa-db-ja.com

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

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"
11
andrew

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

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

 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環境変数。そのため、実際に独自のスクリプトを使用してその入力を処理し、何か賢いことを行うことができます。

19
EightBitTony