管理者のすべてのSSH接続でいくつかのスクリプトを実行したいと思います。これを行うには、次の行を追加しましたsshd_config
。
Match User admin
ForceCommand /etc/my_script.sh
スクリプトは、管理者ユーザーのすべてのSSH接続で実行されます。しかし、今SCP / SFTPは許可されていませんか? SSH にのみ有効です。 SSH、SCP、SFTPアクセスが必要です。
my_script.sh:
#!/bin/sh
ip=$(echo $SSH_CONNECTION | awk '{print $3}')
if [ "$ip" == "192.168.200.101" ]; then
echo -ne "Detected ssh connection over USB... \n"
echo -n "-----------------------------------------\n"
sudo -s . /etc/my_script2.sh
else
echo -ne " continuing user login ...\n "
exec "/sbin/console.sh"`
fi
答え1
SCPまたはSFTPプロトコルを使用している場合、SSHサーバーはSCP / SFTPサーバーアプリケーションを実行する必要があります。あなたのように無条件力 console.sh
、あなたはSCP/SFTPを壊しました。
SSH_ORIGINAL_COMMAND
クライアントがSFTP / SCPを使用して許可するかどうかを検出するには、変数を評価する必要があります。
通常のSSH端末接続を使用してスクリプトを実行し、SFTP、SCPを許可する場合そしてそれでもランダムなコマンドの実行を可能にする解決策は、スクリプトで(空でない)ことをSSH_ORIGINAL_COMMAND
テストすることです。基本的な解決策 - スクリプトの上部に次のように入力します。
if [[ $SSH_ORIGINAL_COMMAND ]]; then
eval "$SSH_ORIGINAL_COMMAND"
exit
fi
(テストされていません+私はシェルの専門家ではありません。より良い安全なソリューションがあるかもしれません)
もう少し技術的な詳細を含むいくつかの関連する質問です。
シームレスなSFTPトンネル/ジャンプボックス