Jedno polecenie, aby zalogować się do SSH i uruchomić program?


58

Czy istnieje sposób na skonstruowanie pojedynczego polecenia, aby zalogować się przez SSH do zdalnego serwera i uruchomić program na zdalnej powłoce logowania?

W podręczniku OpenSSH czytamy: „Jeśli podano polecenie, jest ono wykonywane na zdalnym hoście zamiast powłoki logowania”. Na przykład ssh user@server mailzaloguje się do zdalnego serwera, wyświetli stan skrzynki pocztowej, a następnie wróci do lokalnej powłoki. Czy istnieje sposób na pozostanie na zdalnej powłoce po wyświetleniu statusu poczty?

Ponadto ssh user@server [command]wydaje się , że nie działa, jeśli polecenie jest programem, na przykład vim lub mutt. Czy istnieje sposób na zalogowanie się do zdalnej powłoki i uruchomienie programu podczas pozostawania w zdalnej powłoce podczas programu i po wyjściu z programu, dopiero w końcu kończąc na określonej logoutkomendzie (tak jak w normalnej sesji SSH)?

W końcu chciałbym móc umieścić takie polecenie jako alias w lokalnym pliku .bashrc, aby można je było szybko uruchomić w razie potrzeby. Przykładem może być zalogowanie się przez SSH do zdalnego serwera i otwarcie mutt na zdalnym serwerze, aby odczytać lub wysłać e-mail.


Co rozumiesz przez pozostawanie w zdalnej powłoce po wyświetleniu statusu poczty? Czy nie byłoby to równoznaczne robi ssh po uruchomieniu komendy mail: ssh remote@server mail ; ssh remote@server? Również jakiekolwiek zdalnie wykonane polecenie, które wymaga terminala, nie przetrwa / nie będzie działać przez ssh, prawda?
mkc

Cóż, wydaje się, że to działa, aby uruchomić polecenie, a następnie uzyskać zdalną powłokę, ale robi to poprzez otwarcie jednego połączenia SSH i uruchomienie polecenia i zamknięcie połączenia SSH, a następnie otwarcie innego połączenia SSH. Czy można to wszystko zrobić za pomocą pierwszego połączenia? Ponadto nadal nie pozwala to na uruchomienie programu.
user981178,

Odpowiedzi:


90

Próbowałeś ssh -t user@server "mail && bash"(lub zastąpiłeś bashdowolną powłoką, którą lubisz)?

Jest -tto konieczne, aby stworzyć pseudo-tty, aby bash mógł używać go jako interaktywnej powłoki.


1
Chociaż, przyznaję, prawdopodobnie wolałbym po prostu biegać muttwewnątrz tmuxlub screen, a następnie mogę podłączyć i podłączyć ponownie do woli, a także mogę uruchomić tyle dodatkowych powłok, ile chciałem.
jsbillings

1
Cóż, za pomocą tego polecenia znajduję różne zachowania. Użyte jak powyżej (w odpowiedzi) nadal wyświetla tylko stan skrzynki pocztowej, a następnie się wylogowuje, ale teraz pokazuje również, że połączenie zostało zamknięte. Używane jak wyżej, ale z nano, na przykład, zamiast poczty, otwiera sesję nano, a następnie po wyjściu ma powrócić do zdalnej powłoki bash, który następnie musi zostać zakończony z exitzamiast logout. Nie jestem jeszcze w stanie przetestować tego z muttem (lub podobnym).
user981178,

Czy ta -topcja budzi jakiekolwiek obawy dotyczące bezpieczeństwa? Nie korzystałem z tego wcześniej.
user981178,

O ile mi wiadomo -t nie wprowadza żadnych problemów związanych z bezpieczeństwem. Czy próbowałeś zastępując &&z ;?
brm

każde polecenie, które zakończy działanie z niezerowym statusem wyjścia, spowoduje, że drugie polecenie nie uruchomi się z powodu logiki powłoki.
jsbillings
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.