Eu tenho várias máquinas nas quais eu ssh regularmente apenas com o propósito de usar sudo su para passar o resto da minha sessão logado como um usuário de propósito especial. O fluxo de trabalho geral é:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Eu gostaria de resumir isso em um verso que eu posso alias, então eu posso apenas configurar um alias para cada máquina e chegar onde eu preciso estar em um único comando, sem precisar digitar o boilerplate sudo su - specialuser . Eu poderia talvez configurar me@othermachine para sudo su no login, mas gostaria de manter a flexibilidade para operar como me se eu precisar.
( Nota: eu não tenho nenhum controle sobre othermachine ou a maneira como ele está configurado; este é um fluxo de trabalho estabelecido que eu vim quando fui contratado.)
Meu primeiro pensamento foi apenas
ssh me@othermachine "sudo su - specialuser"
e esse tipo de trabalho funciona, mas não me faz nenhum aviso, ^C mata e me desconecta, e eu presumo que várias outras coisas provavelmente estão erradas também.
Depois de ler Execute o comando ssh remoto com o shell de login completo Eu tentei algumas coisas mais exóticas, como
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
e
ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'
- nenhum dos quais eu esperava trabalhar, e eles não o fizeram, mas eu pensei que deveria experimentá-los para a perfeição (e evitar perto-como-duplicar); eles produziram o mesmo shell sem prompt (o segundo com um shell de prompt-less de bônus adicional para me após exit de um para specialuser ). E eu tentei
ssh me@othermachine "sudo su - specialuser -c bash -l"
mas acabou de me pegar
sudo: no tty present and no askpass program specified
Melhores ideias?