Como posso ter várias sessões de terminal através de uma única conexão SSH?

21

Eu tenho uma edição do servidor Ubuntu em execução e posso fazer o SSH nela para executar várias tarefas. O que eu gostaria é a capacidade de fazer o SSH no meu servidor iniciar um aplicativo de servidor e depois mudar para outra sessão "virtual" (com a mesma instância do SSH) e executar chamadas de clientes no serviço. Quando inicio o serviço, é uma chamada de bloqueio, por isso não posso executar chamadas de cliente contra ele sem iniciar outra sessão SSH.

Eu esperava que houvesse uma maneira mais lenta, algo como a interface do usuário faz com os desktops virtuais.

JPrescottSanders
fonte

Respostas:

24

O que você deseja usar é a tela ou, melhor ainda, um invólucro fácil de usar na tela chamado byobu.

Tela permite executar várias sessões de terminal virtual na mesma sessão ssh. Um tutorial e páginas de ajuda estão disponíveis.

O byobu é um invólucro que permite abrir facilmente novas telas com uma simples tecla de função em vez da combinação de teclas de ctrl-a. Também mostra uma linha de status com todos os terminais virtuais abertos que podem ser nomeados.

Outro recurso interessante é o fato de que toda a tela pode permanecer ativa enquanto a conexão ssh estiver desconectada. Você acabou de se conectar novamente via ssh e chamar byobu e tudo está como antes.

Finalmente algumas capturas de tela do byobu.

txwikinger
fonte
5

GNU Screen é a resposta que você está procurando - mas é muito parecido com o Vi. Você tem muito aprendizado de comandos para configurar um ambiente de tela bem-sucedido. Aqui estão algumas coisas para você começar. Primeiro, você desejará que este .screenrc http://paste.ubuntu.com/473764/ salve-o no servidor remoto na pasta inicial dos usuários. Próxima tela de instalação na máquina remota ( sudo apt-get install screen) Em seguida, você deseja acioná-la aqui estão alguns comandos para "acionar a tela":

screen- Isso é bem simples. Inicia uma nova sessão de tela screen -ls- Liste todas as sessões de tela ativas. Sim, você pode ter vários terminais dentro de várias telas. TÃO DOCE.

Amostra

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> - Isso retomará uma sessão de tela destacada, IE: screen -x 16467

Quando estiver em uma tela (e você tiver empregado meu .screenrcarquivo de amostra ), você verá o seguinte na parte inferior:

(LOAD) 0$* bash

Quais são os servidores carregados e uma lista de todas as "guias do terminal" abertas. Atualmente, apenas uma janela. Digite algo e pressione esta combinação de teclas: Ctrl + Asolte e, em seguida, pressione c. Ctrl + Aé a sequência de escape. Todos os comandos são iniciados com esta combinação. cé criar uma nova guia. Você notará o rodapé (LOAD) 0-$ bash 1$* bashque mostra que existe outra guia aberta e a guia ativa é o número 1. É possível abrir no máximo 60 guias por sessão de tela.

Se você quiser tela de saída, mas mantê-lo funcionando uso Ctrl + A, em seguida, dque irá destacar sua sessão. Finalmente, você pode fechar as abas usando Ctrl + Athen, kque eliminará essa aba (se ela travar), mas normalmente você pode digitar apenas exitcomo se estivesse em um terminal e ele fechará a aba.

Por fim, para listar todas as janelas abertas, você pode digitar Ctrl + Aentão ".

Há várias opções disponíveis para o Screen, que você deve colocar sobre o arquivo man para obter mais. Existem algumas desvantagens. Você não pode usar sua barra de rolagem na tela. É necessário usar controles de buffer para reverter, no entanto, o acima é suficiente para você começar a ver se essa é uma opção viável. Uma grande coisa sobre isso e algo que eu lidei muito como administrador do sistema - conectividade de rede. Se sua rede cair, suas operações não serão perdidas! Como a tela está sendo executada no servidor. Você só precisa fazer login novamente via SSH screen -lse screen -xvoltar à sua sessão.

Marco Ceppi
fonte
Parece que o txwikinger me venceu com alguns links úteis!
Marco Ceppi
Digite Ctrl + Aentão ?para ir para a página de ajuda. Todos os comandos e atalhos estão listados lá. Digite Ctrl + Aentão :para usar qualquer um dos comandos pelo nome, se lembrar do nome, mas esqueceu a tecla de atalho.
Dan
1

Se você estiver usando o Ubuntu Server Edition byobué definitivamente sua melhor opção. O Guia do Servidor Ubuntu possui alguma documentação útil .

Geralmente, é mais fácil aprender e usar do que screene é instalado por padrão.

jbowtie
fonte
0

Eu uso o Emacs, então a configuração padrão da tela dificulta minha vida.

$ cat /home/cjac/.screenrc 

escape ^ \

Tente isso!

cjac
fonte