Em um servidor Linux, como você usa vários terminais em uma única conexão ssh?

15

Costumo encontrar-me abrindo várias conexões ssh para visualizar vários arquivos de log ao mesmo tempo tail -f.

Isso não é um problema quando estou em casa porque uso criptografia de chave pública para login sem senha. No entanto, usarei frequentemente o computador na minha universidade para fazer isso, para não ter a opção de usar minha chave privada. É irritante digitar minha senha 4 ou 5 vezes para obter várias janelas de terminal.

Como posso obter vários terminais em uma única conexão?

epochwolf
fonte

Respostas:

38

Basta usar a tela GNU , é ótimo, pois você pode iniciar sessões remotas e restaurá-las se sua conexão cair. Está disponível como um pacote para a maioria das distribuições e pode até já estar instalado no seu sistema universitário.

O manual fornecerá tudo o que você precisa para começar; por padrão, todos os comandos são precedidos por Ctrl+A. Por exemplo, para exibir a ajuda na tela, basta pressionar Ctrl+Ae pressionar?

saschabeaumont
fonte
Sou administrador do Linux há vários anos e uso a tela muitas e muitas vezes por dia.
Nenhum servidor está completo sem tela.
Gert H
2
Depois de usar a tela nas últimas horas, não acredito que vivi sem ela! Passei 5 anos fazendo errado.
Epochwolf
11

A tela permite que você tenha vários terminais e muito mais (como a capacidade de desconectar e reconectar à sua sessão).

Algumas notas para você começar:

Ctrl-a c   create
Ctrl-a d   detach
screen -r  reattach
Ctrl-a a   toggle
Ctrl-a "   list

E algumas leituras recomendadas:

Philip Durbin
fonte
4

Dê uma olhada nos dois artigos a seguir sobre o compartilhamento de conexão SSH:

http://fermiparadox.wordpress.com/2008/06/19/ssh-connection-sharing/
http://protempore.net/~calvins/howto/ssh-connection-sharing/

Basicamente, faça uma pesquisa no google sobre compartilhamento de conexão ssh e você encontrará vários outros artigos.

Evan
fonte
1
Interessante. O único problema é que, se minha conexão com a Internet cair, não seria possível reconectar sem excluir o soquete. Se não consigo conectar, como entro no servidor para excluir o soquete?
Epochwolf
Você não precisa excluir o soquete no servidor, é apenas um compartilhamento do lado do cliente. Então você executa o `ssh foo 'uma vez e ele cria o soquete na mesma máquina em que o comando ssh foo foi executado. O servidor vê vários logins em ttys separados, portanto, não conhece diferentes logins separados "normais".
David Gardner
3

Possivelmente, você pode usar o encaminhamento do X para abrir vários xterms remotos na área de trabalho local.

John Fouhy
fonte
O servidor não possui o X11 instalado. Além disso, não é viável em um sistema Windows em que não consigo instalar um servidor X.
Epochwolf
O servidor Linux não precisa do X11 para executar aplicativos gráficos que aparecem na área de trabalho local. Além disso, o Cygwin X-Server funciona muito bem para executar coisas como o Firefox na minha caixa Linux doméstica (sem o X rodando na minha casa) e elas aparecem muito bem no meu laptop Windows local.
2121 shapr
2

Você não fornece um motivo convincente para não poder usar chaves privadas de outros sistemas. Gere-os por máquina e adicione as chaves aplicáveis ​​ao author_hosts

Ainda assim, use a tela.

ironfroggy
fonte
É uma boa idéia usar uma chave privada no que equivale a um computador público? Especialmente considerando que eu não coloquei uma senha na chave?
Epochwolf
1
Você não usaria a mesma chave que em outros lugares - geraria uma nova chave (com uma senha) e adicionaria sua chave pública ao arquivo allowed_keys no seu servidor. Nomeie-o como "portablekey" e retire-o de allowed_keys se você acha que pode ter sido comprometido.
Neall 01/05/09
2

Você também pode querer olhar para o byobu . É uma versão aprimorada do Screen e acredito que seja um projeto do Ubuntu. Mas ele vem como padrão no Ubuntu 9.10 e mais recente.

Eu ainda uso o Screen por hábito, mas queria mencionar essa alternativa mais recente.

3dinfluence
fonte
1

Se tudo o que você está usando é seguir vários arquivos, também pode estar interessado em multitail .

Evan
fonte
Link interessante. Eu acabei de mencionar meu uso mais comum. Também preciso alternar entre vim e bash para procurar caminhos.
Epochwolf
1

Um recurso de tela não mencionado é "desanexar" a tela e continuará executando os comandos que você executar nesse conjunto de telas. Depois que a tela é desanexada, você pode fazer logout e tudo isso continuará sendo arrastado, mesmo após o logoff. Vou iniciar a tela e, em seguida, executar vários comandos c para criar novas 'sub-telas'. Posso alternar entre eles e iniciar uma compilação ou processamento de dados de longa duração e ter certeza de que minha conexão VPN de baixa qualidade não fará com que tudo acabe com ela.

Após o logoff, você pode efetuar login novamente e usar 'screen -R', que o anexará novamente às suas sessões de tela existentes.

Paul Leclerc
fonte
0

Para usar screencom ssh, digite

ssh -t <user>@<server> screen -r

( fonte ). man ssh:

-t Força a alocação pseudo-terminal. Isso pode ser usado para executar programas arbitrários baseados em tela em uma máquina remota, o que pode ser muito útil, por exemplo, ao implementar serviços de menu. Várias opções -t forçam a alocação de tty, mesmo se ssh não tiver tty local.

Yaroslav Nikitenko
fonte