Seu comando avalia $(ssh-agent -s) na máquina local, pois está entre aspas duplas. Você precisa colocar o comando inteiro para rodar no gateway entre aspas simples. Como o próprio comando contém aspas simples (para proteger o código que deveria ser executado no destino), é necessário escapar dessas aspas simples como '\'' .
ssh user@Gateway 'ssh Target '\''eval $(ssh-agent -s); ssh-add my_key; mpirun --hostfile .hosts program'\'
Você pode automatizar a etapa do gateway configurando seu cliente ssh local. Coloque isso no seu ~/.ssh/config :
Host Target
User user
ProxyCommand ssh Gateway nc %h %p
nc é netcat . Então corra
ssh Target 'eval $(ssh-agent -s);ssh-add my_key;mpirun --hostfile .hosts program'
diretamente da máquina local.