it-swarm-pt.com

Posso me conectar ou visualizar sessões ssh abandonadas?

Eu tenho uma instância virtual de redhat em execução que posso ssh a partir de qualquer host na rede corporativa. Minha sessão ssh foi interrompida durante a execução de alguns scripts que podem ou não ter me feito desconectar. O comando who localmente ainda lista a conexão descartada. Reconectar com ssh inicia uma nova sessão. Existe uma maneira de se conectar à sessão original? Se não, posso matá-lo? Eu tenho acesso root e físico. Eu não estava usando a tela na sessão original.

14
jms

Você deseja usar tela no controle remoto e, em seguida, quando voltar ao ssh, reconectar-se a essa instância da tela.

mas não, você não pode se reconectar a uma sessão ssh, precisa usar a tela (ou algo semelhante para facilitar isso).

Veja esta pergunta para pelo menos uma outra opção e algumas diferenças entre ela (tmux) e tela. depois de ler a resposta para essa pergunta ... eu realmente diria que tmux é melhor

ah e sim, você poderia kill o processo (incluindo a bifurcação bifurcada) para interrompê-lo, você pode tentar skill matar o usuário pelo nome, mas eu suspeito que esse usuário seja root ... pode tentar matar coisas que não pode.

a resposta foi atualizada algumas vezes

11
xenoterracide

Por padrão, você não pode se reconectar a uma sessão ssh abandonada. No entanto, você pode configurar processos dentro de uma sessão ssh, à qual pode se reconectar após o restabelecimento de uma nova sessão ssh.

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. A tutorial e páginas de ajuda estão disponíveis.

byob é 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 alguns screenshots do byobu.

4
txwikinger

Como mencionado, a tela é provavelmente a sua melhor aposta. Se/quando sua sessão for interrompida, ela continuará em execução. Digite 'screen-list' para ver as sessões disponíveis e 'screen -r' com a sessão que você deseja. Uma pequena dica, você pode completar a sequência da sessão em tabulação, em vez de copiar/colar a coisa toda.

No entanto, a tela pode ser irritante. No meu cliente, você não pode rolar facilmente para ver o histórico no console. Ele age de maneira um pouco diferente do que você esperaria. Se tudo o que você quer é garantir que seus procs de longa duração não sejam mortos, use 'Nohup'. Isso impedirá que seu processo seja desligado quando você perder sua conexão. Certifique-se de enviar sua saída proc para um arquivo, se você quiser monitorá-lo. Além disso, se você possui um script bash, acho que precisa chamar explicitamente 'bash' na frente do Nohup. Um exemplo...

Nohup bash ./myscript.sh> output.log 2> & 1 &

Isso significa Nohup, para evitar matar o proc, bash para chamar explicitamente o bash se você tiver itens específicos do bash em seu script, seu script chamado 'myscript.sh' no diretório atual, output.log como o arquivo para enviar std out e erro para e o '&' no final para executar o proc em segundo plano.

3
kāgii