Naturalmente, você pode definir a variável de ambiente dentro do comando, mas você terá que ter cuidado com as citações: lembre-se de que seu shell vai analisar sua linha de comando local, e então o shell remoto vai continuar a string que recebe.
Se você quiser que uma variável obtenha o mesmo valor no servidor que ela tem no cliente, tente a opção SendEnv :
ssh -o SendEnv=MYVAR server.example.com mycommand
Isso requer suporte do servidor, no entanto. Com o OpenSSH, o nome da variável deve ser autorizado em /etc/sshd_config .
Se o servidor permitir apenas determinados nomes de variáveis específicas, você poderá contornar isso; por exemplo, uma configuração comum permite LC_* through e você pode fazer o seguinte:
ssh -o SendEnv=LC_MYVAR server.example.com 'MYVAR=$LC_MYVAR; unset LC_MYVAR; export MYVAR; mycommand'
Se mesmo LC_* não for uma opção, você poderá passar informações na variável de ambiente TERM , que é sempre copiada (no entanto, pode haver um limite de comprimento). Você ainda terá que se certificar de que o shell remoto não restringe a variável TERM para designar um tipo de terminal conhecido. Passe a opção -t para ssh se você não estiver iniciando um shell interativo remoto.
env TERM="extra information:$TERM" ssh -t server.example.com 'MYVAR=${TERM%:*}; TERM=${TERM##*:}; export MYVAR; mycommand'
Outra possibilidade é definir a variável diretamente no comando:
ssh -t server.example.com 'export MYVAR="extra information"; mycommand'
Assim, se passar uma variável local:
ssh -t server.example.com 'export MYVAR='"'$LOCALVAR'"'; mycommand'
No entanto, tenha cuidado com as questões de cotação: o valor da variável será interpolado diretamente no fragmento de shell executado no lado remoto. O último exemplo acima assume que $LOCALVAR não contém nenhuma aspas simples ( ' ).