2 votos

Cómo determinar el motivo de la rotura de la tubería SSH

Durante la última semana, mi conexión SSH a una instancia de Amazon EC2 sigue desconectándose con

Error de escritura: Tubería rota

Leyendo unos cuantos sitios, supuse que se debía a que no se habían establecido tiempos de espera, así que creé un ~/.ssh/config como sigue, basándose en

### Stop timing out connections
ServerAliveInterval 120  
ServerAliveCountMax 20  

TCPKeepAlive yes

### SSH Connection pooling for faster additional connections to a machine
ControlMaster auto  
ControlPath /tmp/ssh_mux_%h_%p_%r

Host *  
  ControlMaster auto  
  ControlPath ~/.ssh/control/%r@%h:%p  
  ControlPersist 3600  

### Make it so ssh-ing from one server to another passes keys around automagically
Host *
ForwardAgent yes

### Get rid of SSH connection delays
GSSAPIAuthentication no

### Use less encryption on servers I cant get to off-network
Host 10.* 172.* 192.168.*  
Ciphers blowfish-cbc

Estos ajustes no parecían tener efecto, sin embargo, me di cuenta de que cuando estoy no en casa, la conexión permanece inactiva como desde hace un año. He accedido a la instancia mediante ssh en dos redes distintas a la Wifi de mi casa, así que supongo que hay algo que ha ocurrido en casa en las últimas dos semanas para cambiar el comportamiento de la conexión SSH.

Usando Wireshark o de otra manera, ¿cómo puedo seguir/diagnosticar qué/donde ocurre el problema de las tuberías SSH rotas en mi red doméstica?

Utilizando

  • Mac OS 10.7.5
  • OpenSSH_5.6p1, OpenSSL 0.9.8r 8 feb 2011
  • Amazon EC2 AMI t1.micro

1voto

Mike Bretz Puntos 111

Comprueba la configuración local de keep alive en tu mac. Estos eran los míos..:

sysctl -a | grep tcp.keep
net.inet.tcp.keepidle: 3600
net.inet.tcp.keepintvl: 150
net.inet.tcp.keepinit: 75000
net.inet.tcp.keepcnt: 8

Necesitaba cambiar la configuración de keepintvl a algún valor más alto:

sudo sysctl -w net.inet.tcp.keepintvl=7500

Entonces los mensajes de error de ssh "write failed: Broken pipe" desapareció.

0voto

Matt Puntos 108

No indicas qué sistema operativo se está ejecutando en tu instancia EC2. Vamos a suponer que es una variante de linux.

Lo primero que debes hacer es aumentar la cantidad de registros que proporciona tu SSHD. Tiene dos maneras de hacer esto. Puede cambiar las opciones para que SSHD siempre se inicie con las banderas de depuración, o puede iniciar otra instancia en un puerto no estándar. De cualquier manera, el secreto para obtener la salida de depuración es usar -d's. De la página man en un servidor Mint (variante de Ubuntu)

-d Modo de depuración. El servidor envía una salida de depuración verbosa al error estándar, y no se pone en segundo plano. El servidor tampoco se bifurcará y sólo procesará una conexión. Esta opción sólo está pensada para la depuración del servidor. Varias opciones -d aumentan el nivel de depuración nivel de depuración. El máximo es 3.

Desde su cliente, puede utilizar las opciones verbose para ssh AL servidor, como ssh -vvv user@host.com -p puerto que utilizó para su sshd.

Una cosa más que sugeriría es deshacerse de la mayoría de los elementos en su archivo de configuración, sólo para asegurarse de que no está añadiendo al problema.

Ninguna de estas cosas son respuestas, pero podrían acercarte a una.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X