J'ai plusieurs machines dans lesquelles je ssh régulièrement uniquement dans le but d'utiliser sudo supour passer le reste de ma session connecté en tant qu'utilisateur spécial. Le workflow général est le suivant:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Je voudrais résumer cela en une seule ligne que je peux alias, donc je peux simplement configurer un alias pour chaque machine et arriver là où je dois être dans une seule commande, sans avoir à taper le passe- sudo su - specialuserpartout. Je pourrais peut-être configurer me@othermachineà la sudo suconnexion, mais je voudrais garder la flexibilité de fonctionner comme mesi j'en avais besoin.
( Remarque: je n'ai aucun contrôle sur othermachinela façon dont il est configuré; c'est un flux de travail établi sur lequel je suis entré lors de mon embauche.)
Ma première pensée était juste
ssh me@othermachine "sudo su - specialuser"
et ce genre de travaux, mais cela ne m'invite pas, le ^Ctue et me déconnecte, et je suppose que diverses autres choses sont probablement mauvaises aussi.
Après avoir lu la commande Run Remote ssh avec Full Login Shell, j'ai essayé quelques autres choses exotiques comme
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
et
ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'
- ni l'un ni l'autre dont je m'attendais à travailler, et ils ne l'ont pas fait, mais j'ai pensé que je devrais les essayer pour être complet (et pour éviter les doublons) ils ont produit le même shell sans invite (le second avec un bonus sans invite supplémentaire pour l' meafter exit-ing de celui pour specialuser). Et j'ai essayé
ssh me@othermachine "sudo su - specialuser -c bash -l"
mais ça m'a juste
sudo: no tty present and no askpass program specified
De meilleures idées?
sudoje devrais frapper ^C? Si je ne peux rien trouver de mieux, je pourrais essayer.
su mepartir specialuser. Ou dans .profileou .bashrc, si vous ne suivez pas le sudoavec exit, votre premier exitvous ramènera à me, avec un second pour terminer la session. Ou même utiliser un fichier indicateur, donc sudoest précédé [ -f ~/.keep.me ] && del ~/.keep.meet suivi de [ \! -f ~/.keep.me ] && exit: vous n'avez alors besoin que d'un script ou d'un alias pour une commande meas :>~/.keep.me; exit. Maintenant , exitmettra fin à votre session et mesera revenir à votre session de connexion.
/bin/bashet pas simple bashpour des raisons de sécurité (pour éviter les chevaux de Troie ). Surtout s'il y a un sudoavant ...
~/.profileaprès un court délai?