このコマンドを実行/調整し、ForceCommandを使用してこのユーザーにシェルを提供するにはどうすればよいですか?
クライアントコマンド
(cat ./sudoPassword ./someCommandInput) | ssh user@ip "sudo -Sp '' someCommand"
サーバー sshd_config
ForceCommand /bin/bash
背後の制限は、ForceCommandがそのユーザーにシェルを提供するメカニズムでなければならず、上記の一般的なコマンドssh user@ip
も機能するはずです。
私は次のようなさまざまな構成を試しました。
ForceCommand /bin/bash -ic $SSH_ORIGINAL_COMMAND ls
ForceCommand /bin/bash -s < $SSH_ORIGINAL_COMMAND
ForceCommand /bin/bash -c $SSH_ORIGINAL_COMMAND
また、-ttなどのsshオプションを提供してクライアントコマンドを試してみましたが、正しい設定が見つからないようです。
答え1
ラッパースクリプトをForceCommand
次の.scriptとして使用します(例:に保存/usr/local/bin/myshell
)。
#! /bin/bash
if [[ -n $SSH_ORIGINAL_COMMAND ]] # command given, so run it
then
exec /bin/bash -c "$SSH_ORIGINAL_COMMAND"
else # no command, so interactive login shell
exec bash -il
fi
実行中:
% grep ForceCommand -B1 /etc/ssh/sshd_config
Match user muru
ForceCommand /usr/local/bin/forceshell
% ssh muru@localhost
$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
$ logout
Connection to localhost closed.
% ssh muru@localhost echo foo
foo
% ssh muru@localhost echo '*'
Desktop Documents Downloads Music Pictures Public Templates Videos