A maneira mais óbvia de executar um comando remotamente é especificá-lo na linha de comando ssh. O comando ssh é sempre interpretado pelo shell do usuário remoto.
ssh [email protected] '. ~/.profile; command_that_needs_environment_variables'
ssh -t [email protected] '. ~/.profile; exec zsh'
Contas compartilhadas geralmente são uma má ideia; se possível, consiga contas separadas para cada usuário. Se você está preso a uma conta compartilhada, pode criar um alias:
ssh -t [email protected] 'HOME=~/bob; . ~/.profile; exec zsh'
Se você usar a autenticação de chave pública (novamente, recomendado), poderá definir comandos por chave em ~/.ssh/authorized_keys
. Veja esta resposta para mais explicações. Edite a linha da sua chave em ~/.ssh/authorized_keys
no servidor (tudo em uma linha):
command="HOME=$HOME/bob;
if [ -n \"$SSH_ORIGINAL_COMMAND\" ]; then
eval \"$SSH_ORIGINAL_COMMAND\";
else exec \"$SHELL\"; fi" ssh-rsa AAAA…== [email protected]