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