Mam kilka maszyn, na których ssh regularnie, tylko w celu sudo suspędzenia reszty sesji zalogowanej jako użytkownik specjalnego przeznaczenia. Ogólny przepływ pracy to:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Chciałbym sprowadzić to do jednego linijki, którą mogę alias, więc mogę po prostu ustawić alias dla każdej maszyny i przejść do miejsca, w którym muszę być w jednym poleceniu, bez konieczności wpisywania płyty sudo su - specialuserkotłowej. Mógłbym może skonfigurować me@othermachine, aby sudo suprzy logowaniu, ale chciałbym zachować elastyczność, aby działać jako mejeśli muszę.
( Uwaga: nie mam żadnej kontroli nad othermachinetym, jak jest skonfigurowany; jest to ustalony przepływ pracy, do którego dołączyłem, gdy zostałem zatrudniony).
Moja pierwsza myśl była słuszna
ssh me@othermachine "sudo su - specialuser"
i tego rodzaju działa, ale nie daje mi żadnych wskazówek, ^Czabija go i wylogowuje, i zakładam, że różne inne rzeczy prawdopodobnie również są złe.
Po przeczytaniu polecenia Uruchom zdalną ssh z opcją Full Login Shell wypróbowałem kilka bardziej egzotycznych rzeczy
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
i
ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'
- z których nie spodziewałem się zadziałać, a nie zadziałały, ale pomyślałem, że powinienem wypróbować je dla kompletności (i aby uniknąć duplikatu); wyprodukowali tę samą powłokę bez monitów (druga z dodatkową premią bez powłoki do uzupełniania mepo exittej z drugiej specialuser). I próbowałem
ssh me@othermachine "sudo su - specialuser -c bash -l"
ale to mnie dopadło
sudo: no tty present and no askpass program specified
Lepsze pomysły?
sudouderzyć ^C? Jeśli nie mogę wymyślić nic lepszego, mógłbym spróbować.
su mez specialuser. Lub w .profilelub .bashrc, jeśli nie będziesz postępować zgodnie sudoz exit, pierwszy exitzabierze Cię z powrotem me, a drugi zakończy sesję. Lub nawet użyj pliku flagi, więc sudojest poprzedzony [ -f ~/.keep.me ] && del ~/.keep.mei następuje po nim [ \! -f ~/.keep.me ] && exit: wtedy potrzebujesz tylko skryptu lub aliasu dla polecenia meas :>~/.keep.me; exit. Teraz exitzakończy sesję i mewróci do sesji logowania.
~/.profilepo krótkim opóźnieniu?