sshd_config ForceCommandがscpをブロックしています。

sshd_config ForceCommandがscpをブロックしています。

管理者のすべての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トンネル/ジャンプボックス

関連情報