Обычно, если вы передаете команду ssh, как это
ssh me@example.com 'some-command.sh'
Вы получаете неинтерактивный сеанс, и ssh завершает работу, как только запускается команда (или сценарий, или что-то еще). Как я могу получить интерактивный сеанс, и при этом запустить команду, которую я указал, с моего локального компьютера. Например, я хотел бы иметь возможность открыть экран и перезапустить определенный сеанс экрана:
ssh me@example.com 'screen -r 12345'
но это не разрешено, возвращая ошибку "Должен быть подключен к терминалу". что, я полагаю, означает, по сути, "должен вызывать эту команду из интерактивной оболочки".
В качестве другого примера я использую тонну машин на работе, которые часто требуют от меня использования общей учетной записи, чтобы иметь права на определенные действия (да, я знаю: плохая идея, но не вините меня, я не настраивал такие путь), и они обычно имеют ksh в качестве оболочки по умолчанию. Я хотел бы войти в систему, переключиться на bash (или zsh) и получить исходный код моей учетной записи .bash_profile (или .zshrc). Это было бы легко, если бы я мог установить интерактивный сеанс SSH и передать команду на удаленный компьютер для запуска при входе в систему.
Я имею в виду очень грязное (и непроверенное) решение, которое я опубликую, но я надеюсь, что кто-то знает лучший способ.
ОБНОВЛЕНИЕ: для тех, кто этого не осознавал, я не планирую делать все это вручную, поэтому, если вы откроете мне интерактивную сессию, а потом сделаете это вручную, то на самом деле ничего не решится.
2-е ОБНОВЛЕНИЕ: Чтобы попытаться еще раз уточнить: я пытаюсь выполнить (произвольные) команды на сервере (программно заданные на клиенте), но затем открыть интерактивный сеанс, на который влияет все, что сделано этими программными командами.