Eu tenho várias máquinas nas quais ssh regularmente apenas com a finalidade de usar sudo supara passar o restante da minha sessão conectada como um usuário de finalidade especial. O fluxo de trabalho geral é:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Gostaria de resumir isso em uma linha que eu possa usar o pseudônimo, para que eu possa configurar um pseudônimo para cada máquina e chegar onde preciso estar em um único comando, sem precisar digitar o sudo su - specialuserpadrão. Eu poderia talvez criar me@othermachinea sudo suno login, mas eu gostaria de manter a flexibilidade para operar como mese eu precisar.
( Observação: não tenho controle sobre othermachinea forma como ela é configurada; esse é um fluxo de trabalho estabelecido em que entrei quando fui contratado.)
Meu primeiro pensamento foi apenas
ssh me@othermachine "sudo su - specialuser"
e esse tipo de funciona, mas isso não me deixa alerta, ^Cmata e me desconecta, e presumo que várias outras coisas provavelmente também estejam erradas.
Depois de ler o comando Run Remote ssh com o Shell de login completo, tentei mais algumas coisas 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 esperava trabalhar, e não funcionaram, mas achei que deveria experimentá-los por completo (e para evitar quase como duplicado); eles produziram o mesmo shell sem prompt (o segundo com um shell sem prompt adicional de bônus adicional para medepois exitdo anterior specialuser). E eu tentei
ssh me@othermachine "sudo su - specialuser -c bash -l"
mas isso me pegou
sudo: no tty present and no askpass program specified
Idéias melhores?
sudoeu deveria acertar ^C? Se eu não conseguir encontrar algo melhor, posso tentar isso.
su mepartir specialuser. Ou em .profileou .bashrc, se você não seguir sudocom exit, o seu primeiro exito levará de volta me, com um segundo para finalizar a sessão. Ou mesmo use um arquivo de sinalizador, portanto, sudoé precedido [ -f ~/.keep.me ] && del ~/.keep.mee seguido por [ \! -f ~/.keep.me ] && exit: você precisa apenas de um script ou alias para um comando mecomo :>~/.keep.me; exit. Agora exitencerrará sua sessão e meretornará à sua sessão de login.
/bin/bashe não um simples bashpor motivos de segurança (para evitar cavalos de Tróia ). Especialmente se há um sudoantes ...
~/.profileapós um pequeno atraso?