J'ai plusieurs machines dans lesquelles je ssh régulièrement uniquement dans le but d'utiliser sudo su
pour 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 - specialuser
partout. Je pourrais peut-être configurer me@othermachine
à la sudo su
connexion, mais je voudrais garder la flexibilité de fonctionner comme me
si j'en avais besoin.
( Remarque: je n'ai aucun contrôle sur othermachine
la 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 ^C
tue 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' me
after 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?
sudo
je devrais frapper ^C
? Si je ne peux rien trouver de mieux, je pourrais essayer.
su me
partir specialuser
. Ou dans .profile
ou .bashrc
, si vous ne suivez pas le sudo
avec exit
, votre premier exit
vous ramènera à me
, avec un second pour terminer la session. Ou même utiliser un fichier indicateur, donc sudo
est précédé [ -f ~/.keep.me ] && del ~/.keep.me
et suivi de [ \! -f ~/.keep.me ] && exit
: vous n'avez alors besoin que d'un script ou d'un alias pour une commande me
as :>~/.keep.me; exit
. Maintenant , exit
mettra fin à votre session et me
sera revenir à votre session de connexion.
/bin/bash
et pas simple bash
pour des raisons de sécurité (pour éviter les chevaux de Troie ). Surtout s'il y a un sudo
avant ...
~/.profile
après un court délai?