9

У меня есть несколько машин, на которые я регулярно захожу по ssh, только для того, чтобы использовать sudo su чтобы провести остаток моего сеанса, вошедшего в систему как пользователь специального назначения. Общий рабочий процесс:

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

Лучшие идеи?

1 ответ1

7

Эта строка должна работать для вас

ssh -t me@machine "sudo su - specialuser" 

Это решение дает мне подсказку или нет в зависимости от ключа -t

ssh -t me@machine "/bin/bash -l"   # Give me a prompt

ssh  me@machine "/bin/bash -l"     # Give me NO prompt
ssh  me@machine                    # Give me NO prompt

Заметки от man ssh

-t
Сила псевдо-тты выделения. Это может использоваться для выполнения произвольных программ на экране на удаленной машине, что может быть очень полезно, например, при реализации сервисов меню. Несколько опций -t принудительно распределяют tty, даже если ssh не имеет локального tty.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .