A sessão SSH deixa de responder quando conectada à máquina virtual do Ubuntu Server usando o VirtualBox

5

Eu realmente estou muito atento aqui, então espero que alguém aqui possa me ajudar. Eu tenho uma máquina virtual rodando o Ubuntu Server 9.10. É apenas um pequeno ambiente de desenvolvimento para que eu possa manter meu código separado dos ambientes de teste e produção. Eu estou usando o VirtualBox 3.1.6 em um laptop rodando o Ubuntu Desktop 9.10. Eu tenho isso configurado com uma conexão de rede em ponte e é ligado ao adaptador sem fio do meu laptop. Não temos conexões com fio neste escritório.

Eu inicializo a VM e está tudo bem. Eu posso SSH para ele usando o gnome-terminal e por um tempo tudo é Kosher. Então, aparentemente de forma aleatória, a sessão de terminal SSH com jeito. Nenhuma mensagem de erro, nada; apenas não responde. Se eu for ao terminal do VirtualBox, acho que a própria VM está perfeitamente bem. Ele pode pingar e eu posso sair com ele. Se eu reiniciar a rede na VM, a sessão SSH no meu terminal gnome ficará, na maioria das vezes, responsiva novamente.

Aqui está um ponto interessante, a sessão SSH às vezes morre bem no meio de mim digitando algo (isso aponta para não ser um problema de sessão ociosa) e se eu for para o terminal VirtualBox e reiniciar a rede e depois retornar para minha sessão SSH gnome-terminal eu acho que ele voltará à vida e o que eu digitei quando a sessão travou originalmente magicamente se digitará no buffer. Então, minha entrada está sendo armazenada em algum lugar e não consigo ir até a VM até que a rede na VM seja reiniciada.

Eu tentei versões diferentes do VirtualBox e usei imagens vmdk e imagens vdi e nada parece funcionar. Eu não posso dizer se o problema é com meu laptop, VirtualBox ou o Ubuntu Server VDI. Existe alguma maneira de depurar este problema? Ou alguém aí viu algo parecido?

    
por nickbart 08.04.2010 / 18:25

5 respostas

1

OK, então encontrei a causa raiz do meu problema e é tão simples que fico um pouco envergonhada: IPs de rede conflitantes. Na verdade, foi uma questão de rede, como eu tinha imaginado, no entanto, não foi tão complicado como eu estava fazendo isso.

Como estou usando a rede em ponte, a VM aparece na tabela de clientes DHCP junto com todas as outras máquinas da rede. Se qualquer uma dessas outras máquinas pegar o IP da minha VM do DHCP (digamos, antes de eu inicializar minha VM por um dia), haverá um conflito sempre que minha VM entrar em operação e fazer com que minha VM pare de responder ao SSH. Isso explica porque quando eu estava usando o terminal VirtualBox, eu não tive nenhum problema.

Não sei exatamente como a maioria dos roteadores lidam com conflitos de IP, mas parece que, qualquer que seja a última máquina a ter atividade de rede, tem precedência. Então, quando eu pulei a rede da minha máquina, tudo correu bem até que qualquer máquina que estivesse compartilhando o IP decidisse se envolver em atividades de rede e, então, o BOOM ... minha conexão seria interrompida.

Eu redefino o IP da rede estática da minha VM para ser bastante alto em nosso alcance, portanto, espero que isso evite conflitos de IP com as máquinas de meus colegas de trabalho.

    
por 14.04.2010 / 18:58
1

Aqui está a maneira correta de manter viva uma sessão ssh

Se você possui o lado do servidor remoto, edite o arquivo de configuração do daemon SSH

sudo vi /etc/ssh/sshd_config  #  on your server

adicione estas linhas

ClientAliveInterval 120 # server sends clients "null packet" every 120 seconds
ClientAliveCountMax 720 # allow clients to stay alive for  720 intervals

720 intervalos === (120 segundos * 720 = 86400 segundos = 24 horas)

alternativamente, se você não possui o lado do servidor, faça essa alteração na sua máquina local (laptop)

vi  ~/.ssh/config   #  on local host NOT on server

ServerAliveInterval 120
    
por 10.05.2016 / 21:13
0

Eu não sabia que conexões em ponte e sem fio funcionavam juntas - pelo menos com a maioria das VMs que eu tentei. Você provavelmente quer / precisa usar nat, ou apenas host e veja se consegue fazer isso funcionar

    
por 08.04.2010 / 18:36
0

Bem, eu nunca encontrei a causa raiz desse problema, mas é definitivamente algo relacionado à rede. Nós temos um roteador Cisco aqui que certamente é um punhado a maior parte do tempo, então a resposta oficial pode estar lá. Eu cheguei a um trabalho ao redor, no entanto. Eu escrevi um script de shell muito simples, que eu fiz para o usuário root rodar a cada minuto:

#!/bin/bash

#keep-alive.sh

/etc/init.d/networking restart
/etc/init.d/ssh restart

Isso apenas afeta a rede e o Open SSH no servidor da VM a cada minuto. É uma solução hacky e deselegante, mas impede que minha sessão SSH seja interrompida permanentemente. A única razão pela qual eu acho isso aceitável é que ele faz o trabalho e é apenas para um pequeno ambiente de desenvolvimento de servidor VM. Naturalmente, eu absolutamente não estou defendendo esse tipo de coisa para qualquer tipo de ambiente de produção.

    
por 12.04.2010 / 18:14
0

Você está digitando Ctrl + S , o que pode interromper a sessão (por motivos legados)? Pressione Ctrl + Q uma dessas vezes o congelado e veja se ele não congela.

    
por 08.04.2010 / 19:57