Então eu percebo que essa questão é antiga neste momento, mas eu descobri uma resposta para isso hoje. Essa é uma alternativa para configurar variáveis de ambiente e pode ser uma solução melhor dependendo da sua situação. Minha situação é esta:
Eu tenho uma instância do Splunk que inicia uma sessão SCP e SSH para um host remoto. Uma lista de e-mails é enviada via SCP e, em seguida, o SSH é usado para executar um script no sistema remoto para executar uma ação nessa lista de e-mails. Aqui está o topo do meu arquivo authorized_keys:
command="/home/username/wrapper.sh",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAAB3 etc...
Este é o meu script wrapper.sh:
#!/bin/bash
vars=( $SSH_ORIGINAL_COMMAND )
case "${vars[0]}" in
"/home/username/scripts/myscript.py")
/home/username/scripts/myscript.py ${vars[1]}
exit 0
;;
"scp")
scp -t ${vars[2]}
chmod 644 ${vars[2]}
exit 0
;;
*)
exit 1
;;
esac
O primeiro caso permite /home/username/scripts/myscript.py com quaisquer parâmetros de linha de comando que foram passados para ele.
A segunda entrada do caso scp permite que o arquivo recebido seja gravado no disco no local pretendido.
Esse método me permite limitar o uso da chave pública para 1 comando e ainda permitir scp. Se alguém tiver uma opção melhor, por favor, compartilhe. :)