У меня есть несколько машин, которые я регулярно использую sudo suв ssh, только для того, чтобы использовать оставшуюся часть моего сеанса в системе как пользователь специального назначения. Общий рабочий процесс:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Я хотел бы свести это в одну строку, которую я могу назвать псевдонимом, так что я могу просто настроить псевдоним для каждой машины и добраться до места, где я должен быть в одной команде, без необходимости набирать sudo su - specialuserшаблон. Я мог бы , возможно , установить me@othermachineна sudo suвходе в систему, но я хотел бы сохранить гибкость , чтобы работать , как meесли мне нужно.
( Примечание: у меня нет никакого контроля othermachineили способа его настройки; это установленный рабочий процесс, который я использовал при приеме на работу.)
Моя первая мысль была просто
ssh me@othermachine "sudo su - specialuser"
и такого рода работы, но это не дает мне подсказки, ^Cубивает это и выдает меня из системы, и я предполагаю, что другие вещи, вероятно, тоже не правы.
После прочтения команды Run Remote ssh с Full Login Shell я попробовал пару более экзотических вещей, таких как
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
а также
ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'
- ни один из которых я ожидал работать, и они не работали, но я подумал, что я должен попробовать их для полноты (и чтобы избежать дубликата); они создали ту же оболочку без подсказок (вторая с добавленной бонусной оболочкой без подсказок для- meпосле exitот-за specialuser). И я попробовал
ssh me@othermachine "sudo su - specialuser -c bash -l"
но это только у меня
sudo: no tty present and no askpass program specified
Лучшие идеи?
sudoя ударил ^C? Если я не могу придумать что-то лучшее, я мог бы попробовать это.
su meот specialuser. Или в .profileили .bashrc, если вы не последуете sudoс exit, ваш первый exitвернет вас назад me, а второй завершит сеанс. Или даже используйте файл флага, поэтому sudoперед ним стоит [ -f ~/.keep.me ] && del ~/.keep.meи следует [ \! -f ~/.keep.me ] && exit: вам нужен только сценарий или псевдоним для команды meas :>~/.keep.me; exit. Теперь exitзавершит сеанс и meвернется к сеансу входа.
~/.profileпосле небольшой задержки?