Єдина команда для входу в SSH та запуск програми?


58

Чи є спосіб структурувати одну команду для входу через SSH на віддалений сервер та запустити програму на оболонці віддаленого входу?

У посібнику з OpenSSH написано "Якщо вказана команда, вона виконується на віддаленому хості замість оболонки входу." Так, наприклад, ssh user@server mailви увійдете на віддалений сервер, відображатиме стан поштової скриньки, а потім поверне вас до локальної оболонки. Чи є спосіб залишитися на віддаленій оболонці після відображення статусу пошти?

Крім того, ssh user@server [command]схоже , це не працює, якщо команда - це програма, наприклад, vim або mutt. Чи є спосіб увійти до віддаленої оболонки та запустити програму, залишаючись у віддаленій оболонці під час програми та після виходу з програми, лише остаточно вийшовши на певну logoutкоманду (як у звичайному сеансі SSH)?

Зрештою, я хотів би мати можливість поставити таку команду як псевдонім у місцевому .bashrc, щоб вона могла швидко запускатися за бажанням. Прикладом може бути вхід через SSH на віддалений сервер і відкриття mutt на віддаленому сервері для читання або надсилання електронної пошти.


Що ви маєте на увазі, залишаючись на віддаленій оболонці після відображення статусу пошти? Хіба це не еквівалентно виконанню ssh після запуску поштової команди ssh remote@server mail ; ssh remote@server:? Також будь-яка віддалено виконувана команда, якій потрібен термінал, не виживе / не працюватиме над ssh так?
mkc

Добре, це, здається, працює для запуску команди, а потім отримання віддаленої оболонки, але це робиться, відкриваючи одне з'єднання SSH і запускаючи команду та закриваючи з'єднання SSH, а потім відкриваючи інше з'єднання SSH. Чи є спосіб зробити це все за допомогою одного першого з'єднання? Також це все ще не дозволяє команді запускати програму.
user981178

Відповіді:


90

Ви пробували ssh -t user@server "mail && bash"(або замінювали bashбудь-якою оболонкою)?

Це -tнеобхідно для того, щоб створити псевдо-tty для bash, щоб використовувати його як інтерактивну оболонку.


1
Хоча, я визнаю, я, мабуть, вважаю за краще просто запустити muttвсередину tmuxабо screen, а потім можу приєднати та приєднати за бажанням, плюс я можу виконати стільки додаткових снарядів, скільки хотів.
jsbillings

1
Що ж, я знаходжу різну поведінку з цією командою. Використовуваний як вище (у відповіді), він все ще відображає стан поштової скриньки, а потім виходить з системи, але тепер також показує, що з'єднання закрите. Використовується як вище, але, наприклад, з nano, замість пошти, він відкриває нано-сеанс, а після виходу повертається до віддаленої оболонки bash, з якої потім потрібно вийти exitзамість logout. Я не в змозі протестувати його ще з mutt (або подібним).
user981178

Чи -tстворює цей варіант якісь проблеми безпеки? Я раніше цього не використовував.
user981178

Наскільки мені відомо - він не викликає жодних проблем щодо безпеки. Ви пробували заміни &&з ;?
брм

будь-яка команда, що виходить із ненульовим статусом виходу, спричинить запуск другої команди через логіку оболонки.
jsbillings
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.