Jak mogę mieć wiele sesji terminali za pośrednictwem jednego połączenia SSH?

21

Mam uruchomioną wersję serwera Ubuntu i mogę do niej SSH wykonywać różne zadania. Chcę, aby SSH na moim serwerze uruchomiło aplikację serwera, a następnie przełączyło się na inną „wirtualną” sesję (z tą samą instancją SSH) i uruchamiało połączenia klienta z usługą. Kiedy uruchamiam usługę, jest to wywołanie blokujące, więc nie mogę uruchamiać przeciwko nim wywołań klienta bez odpalenia innej sesji SSH.

Miałem nadzieję, że może być szybszy sposób, coś takiego jak interfejs użytkownika z wirtualnymi pulpitami.

JPrescottSanders
źródło

Odpowiedzi:

24

To, czego chcesz użyć, to screen, a jeszcze lepiej przyjazne dla użytkownika opakowanie wokół ekranu o nazwie byobu.

Screen pozwala na uruchomienie wielu wirtualnych sesji terminalowych w tej samej sesji ssh. Dostępne są samouczki i strony pomocy .

byobu to opakowanie, które pozwala łatwo otwierać nowe ekrany za pomocą prostego klawisza funkcyjnego zamiast kombinacji klawiszy z ctrl-a. Pokazuje także linię statusu ze wszystkimi otwartymi wirtualnymi terminalami, które można nazwać.

Inną ciekawą funkcją jest fakt, że cały ekran może pozostać włączony, gdy połączenie ssh jest rozłączone. Po prostu łączysz się ponownie przez ssh i dzwonisz byobu i wszystko jest jak wcześniej.

Nareszcie zrzuty ekranu z Byobu.

txwikinger
źródło
5

GNU Screen to odpowiedź, której szukałeś - ale jest bardzo podobny do Vi. Wiele się nauczysz poleceń, aby skonfigurować udane środowisko ekranu. Oto kilka rzeczy na początek. Przede wszystkim będziesz chciał .screenrc http://paste.ubuntu.com/473764/ zapisać go na serwerze zdalnym w folderze domowym użytkowników. Następny ekran instalacji na zdalnej maszynie ( sudo apt-get install screen) Następnie chcesz go uruchomić tutaj, kilka poleceń dla „ekranu uruchamiania”:

screen- To jest dość proste. Rozpoczyna nową sesję ekranu screen -ls- wyświetla listę wszystkich aktywnych sesji ekranu. Tak, możesz mieć wiele terminali na wielu ekranach. JAK SŁODKO.

Próba

screen -ls
There is a screen on:
    16467.pts-0.ubuntu  (08/05/2010 07:47:53 PM)    (Detached)
1 Socket in /var/run/screen/S-marco.

screen -x <pid> - To wznowi sesję Odłączonego ekranu, IE: screen -x 16467

Gdy znajdziesz się na ekranie (i wykorzystałeś mój przykładowy .screenrcplik), u dołu zobaczysz następujące informacje:

(LOAD) 0$* bash

To jest obciążenie serwerów i lista wszystkich otwartych „kart terminali”. Obecnie tylko jedno okno. Wpisz coś, a następnie naciśnij tę kombinację klawiszy: Ctrl + Azwolnij, a następnie naciśnij c. Ctrl + Ajest sekwencją ucieczki. Wszystkie polecenia są uruchamiane za pomocą tej kombinacji. ctworzy nową kartę. Zauważysz stopkę, (LOAD) 0-$ bash 1$* bashktóra pokazuje, że jest otwarta inna karta, a aktywna karta ma numer 1. Możesz otworzyć maksymalnie 60 zakładek na sesję ekranu.

Jeśli chcesz wyjść z ekranu, ale nadal działa, użyj Ctrl + Atego, dco spowoduje odłączenie sesji. Na koniec możesz zamknąć karty, używając Ctrl + Atej metody, kktóra zabije tę kartę (jeśli się zablokuje), ale zazwyczaj możesz po prostu pisać exittak, jakbyś był w terminalu i zamknie tę kartę.

Wreszcie do listy wszystkie otwarte okna można wpisać Ctrl + Apotem ".

Istnieje cały wachlarz opcji dostępnych dla Screen, które powinieneś przelać na plik man, aby uzyskać więcej. Istnieje kilka wad. Nie możesz używać paska przewijania na ekranie, musisz użyć kontrolek bufora, aby cofnąć, jednak powyższe wystarczy, aby zacząć sprawdzać, czy jest to realna opcja. Świetna rzecz w tym i czymś, z czym dużo się zajmowałem jako administrator systemu - łączność sieciowa. W przypadku awarii sieci operacje nie zostaną utracone! Ponieważ ekran działa na serwerze. Wystarczy zalogować się ponownie poprzez SSH wtedy screen -lsi screen -xwraca do swojej sesji.

Marco Ceppi
źródło
Wygląda na to, że txwikinger pobił mnie do tego kilkoma przydatnymi linkami!
Marco Ceppi
Wpisz Ctrl + Anastępnie, ?aby przejść do strony pomocy. Wszystkie polecenia i skróty są tam wymienione. Wpisz Ctrl + Anastępnie, :aby użyć dowolnego polecenia według nazwy, jeśli pamiętasz nazwę, ale zapomniałeś skrótu.
Dan
1

Jeśli korzystasz z Ubuntu Server Edition byobuto zdecydowanie najlepsza opcja. Przewodnik po Ubuntu Server zawiera przydatną dokumentację .

Zazwyczaj jest to łatwiejsze do nauczenia i używania niż screeni jest instalowane domyślnie.

jbowtie
źródło
0

Używam Emacsa, więc domyślna konfiguracja ekranu utrudnia mi życie.

$ cat /home/cjac/.screenrc 

uciec ^ \

Spróbuj tego!

cjac
źródło